Discuss Scratch

apple502j
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

朗報。Scratch LinkとScratch Desktopがオープンソース化。

https://github.com/LLK/scratch-desktop
https://github.com/LLK/scratch-link

Critical vulnerability in SVG rendering engine in Scratch. Allows arbitrary code execution. Update Scratch app to 3.17.1 See details
緊急:Scratch SVG描画エンジンに脆弱性。 任意のコードが実行可能。 Scratchアプリを3.17.1に至急更新すること。 詳細
yukku
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

ハッキングしたら変なブロックができました。ドラックするとマウスから離れなくなります。

ここから下は署名といっていちいち手動で書いていません。
ここの下のほうのChange your signatureで変更できます。

↑の投稿に画像がある場合、使いまわしのプロジェクトのサムネを使用しているのでおかしいことがあります。
           ディスカッションフォーラムを使う前に読んだほうがいいもの           
日本語フォーラムに関する注意書き  日本語フォーラムを使う際に守らなくてはいけない決まりだよ
トピックの投稿機能  投稿する際に使える「技」集だよ
BBcode  文字に色を付けたり大きい文字を書いたりする方法だよ。ただし、スパムに使うのは禁止だよ。
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

バージョンと変更履歴の調べ方についての情報へのリンクです。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
-p-e-n-
Scratcher
77 posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

apple502j wrote:

朗報。Scratch LinkとScratch Desktopがオープンソース化。

https://github.com/LLK/scratch-desktop
https://github.com/LLK/scratch-link
これで少しだけ楽にハックできますね。

アッポーペンかなやっぱw
一応オタクだから彼女いないし、俺って退けない性格だしそこら辺とかめっちゃ似てるって言われない()
握力も-110キロあってクラスの女子に叩かれる←彼女いないからやめるな!w
俺、これでもScratcherですよ? メモメモ
ps 彼女はいません(聞いてたw) 中の人は人間より鳥と犬が好きです 最終更新:2020年8月18日AM7:24
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

inoking wrote:

バージョンと変更履歴の調べ方についての情報へのリンクです。
ここに書かれているような Git の各ブランチやタグが何なのかとかといった情報は
どうやって調べればよいのですか?

すみません、Git は実用レベルでは使ったことないもので。。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
apple502j
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

developブランチが「最新版」
masterブランチが「本番環境」です。

簡単に説明? しますと、(まだ簡単でないかもしれませんが)
https://github.com/LLK/scratch-www/blob/master/package.json
このpackage.jsonは本番環境のもので、「scratch-gui」のところに「いつの時点のscratch-guiか」が書いてあります。
 "scratch-gui": "0.1.0-prerelease.20190418155019",
つまり、scratch-guiのバージョンは「20190418155019」です。

https://github.com/LLK/scratch-gui/releases を見てバージョンで検索すると、今回は「20190418155019」が見つかりました。
その時点のscratch-guiの中身を見るには、-○- マークの右の英数字の羅列をクリックします。(下図黄色部分)


その後、「Browse files」をクリックします。(右上)
そのあと、「package.json」を選びます。
その中の
 "scratch-vm": "0.2.0-prerelease.20190417203423",
が、現在のVMのバージョンです。

Critical vulnerability in SVG rendering engine in Scratch. Allows arbitrary code execution. Update Scratch app to 3.17.1 See details
緊急:Scratch SVG描画エンジンに脆弱性。 任意のコードが実行可能。 Scratchアプリを3.17.1に至急更新すること。 詳細
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

apple502j さん、ありがとうございます 。
こちら

apple502j wrote:

変更内容を確認する最善の方法は、scratch-系のリポジトリをWatchしたり、scratch-wwwのmaster向きプルリクがないか検索したりすることです。
「master向きプルリクがないか検索」についてです。
https://github.com/LLK/scratch-www/pulls?q=is%3Apr+is%3Aclosed
で左端のアイコンが紫の「Merged pull request」になっているものを探すというので合ってますか?

#46 の例の場合、日付からすると
https://github.com/LLK/scratch-www/pull/2910
だと思うのですがそこには
「Pull in latest scratch-gui」
とあり、更にたどると
https://github.com/LLK/scratch-www/pull/2910/commits/9aab911d67e0fa6960b56e5f33c8fc077d444425
「20190417215243」とあり
#46 に書かれている「20190418155019」とは異なっています。
この調べ方のどこがおかしいのでしょうか?

Last edited by inoking (April 20, 2019 15:43:18)


当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
apple502j
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

https://github.com/LLK/scratch-www/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Amerged+base%3Amaster
この検索が一番正確です。
いまのscratch-gui最新版は20190419211608ですね。
https://github.com/LLK/scratch-www/pull/2914/files

基本master向きのプルリクは「[master]」で始まります。

Last edited by apple502j (April 20, 2019 15:53:34)


Critical vulnerability in SVG rendering engine in Scratch. Allows arbitrary code execution. Update Scratch app to 3.17.1 See details
緊急:Scratch SVG描画エンジンに脆弱性。 任意のコードが実行可能。 Scratchアプリを3.17.1に至急更新すること。 詳細
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

あぁ、
プル内容の「Commits」のほうではなく「Files changed」のほうを見ればいいのですね。
それで見ると
2910 についても
https://github.com/LLK/scratch-www/pull/2910/files
で「20190418155019」となり #46 の話と一致しました。

ありがとうございます。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

特定のバージョンの状態に戻して、または、ブロックの処理を変更して、動作確認をしたい場合
どれどれをビルドすればよいのでしょうか?

Scratch 2.0 の場合、
scratch-flash をビルドして
できた Scratch.swf をオフラインエディターのインストール先のものと差し替えると
実現できていました。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
apple502j
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

特定のバージョンの状態に戻すときは、zipファイルをダウンロードするのが一番簡単です。


実行時は
npm start
を行った後、「localhost:8601」にアクセスします。

初回実行時は最初に「npm i」がいります。
また、scratch-vmなどの変更を反映させたい場合は、ja:Scratch 3.0の拡張機能を作ってみよう/下準備のように、npm linkを使います。

Last edited by apple502j (April 21, 2019 07:13:04)


Critical vulnerability in SVG rendering engine in Scratch. Allows arbitrary code execution. Update Scratch app to 3.17.1 See details
緊急:Scratch SVG描画エンジンに脆弱性。 任意のコードが実行可能。 Scratchアプリを3.17.1に至急更新すること。 詳細
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

重い腰を上げ、Scratch 3.0の拡張機能を作ってみようにしたがって環境構築してみました。
おかげさまでソースから実行まで出来るようになりました。ありがとうございました。

一点だけ、
npm start
のところが分かりにくかったです。
「npm start を実行し「Compiled successfully.」が出たら、そのままブラウザで http://localhost:8601/ にアクセスする」
ということが分からず、コマンド応答が帰ってこないのをずっと待っていました
また、Ctrl+C で終了することも書いてあったほうがより良いかと思います。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

スケジューリング処理が変わった? について:

inoking wrote:

ここ一週間くらいで
スケジューリング処理が変わった気がします。

FPS を自動で調整するために
各スプライトで待ち合わせをしている作品があるのですが
それがカクカク動くようになってしまいました。
scratch-vm を scratch-vm:20190321151527 (scratch-gui:20190321152316 付属分) に差し替えると発生せず
scratch-vm を scratch-vm:20190329172358 (scratch-gui:20190404100408 付属分) に差し替えると発生する
ことが分かりました。

さらに調査すると scratch-vm:20190321151527 に対し
Make Scratch 3 project timer more compatible with Scratch 2 currentMS… の以下4ファイルを差し替えただけで発生することが分かりました。
・src/engine/block-utility.js
・src/engine/runtime.js
・src/engine/sequencer.js
・src/io/clock.js
「タイマーを、より Scratch 2 に互換のあるものにする」というタイトルなので、
既存のプロジェクトが動かなくなっている以上、これはバグですね。

直してもらうには「Issues」に上げるのが手順だと思いますが
再現プロジェクトを作ったりといったことを考えると頭が痛いです。。。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

朗報:
50MB のプロジェクトサイズ制限がなくなっているようです(いつからそうだったのかは不明)。
scratch-gui, scratch-vm のソースから検索してもそれらしいところは見つかりませんでした。

実際、58MB の .sb3 を保存できました。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
apple502j
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

逆にバグではないでしょうか。
サイズ制限をなくす提案は却下されています。
https://scratch.mit.edu/discuss/topic/50874/?page=12#post-3288913

Critical vulnerability in SVG rendering engine in Scratch. Allows arbitrary code execution. Update Scratch app to 3.17.1 See details
緊急:Scratch SVG描画エンジンに脆弱性。 任意のコードが実行可能。 Scratchアプリを3.17.1に至急更新すること。 詳細
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

#53 について:

すみません、作品側のバグでした。
再現プロジェクトを作るために絞り込んでいくなかで発見しました。

Scratch 2.0 と比べると動作は変わったことになりますが
そもそも使い方が間違っていたのでシステム側は問題ありません。

元々バグであったものが、スケジューリング処理が変わったために発現したようです。

お騒がせして申し訳ありませんでした。

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
oyamaa
New to Scratch
5 posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

エディタに最初からあるブロックを表示させないようにすることはできるのでしょうか。
「ブロック定義」というのは使わないので隠したいと考えています。
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

あ、そういえば、、
フォーラムのソースは別管理なのでしたね。
https://scratch.mit.edu/discuss/post/3354832/
https://scratch.mit.edu/discuss/post/3356123/

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking
apple502j
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

oyamaa wrote:

エディタに最初からあるブロックを表示させないようにすることはできるのでしょうか。
「ブロック定義」というのは使わないので隠したいと考えています。
scratch-blocksの改造ですね。
やったことがないのでわかりませんが、難しそうな予感がします。

Critical vulnerability in SVG rendering engine in Scratch. Allows arbitrary code execution. Update Scratch app to 3.17.1 See details
緊急:Scratch SVG描画エンジンに脆弱性。 任意のコードが実行可能。 Scratchアプリを3.17.1に至急更新すること。 詳細
inoking
Scratcher
1000+ posts

Scratch 3.0 をハック(動作や構造を解析すること)しよう!

apple502j wrote:

oyamaa wrote:

エディタに最初からあるブロックを表示させないようにすることはできるのでしょうか。
「ブロック定義」というのは使わないので隠したいと考えています。
scratch-blocksの改造ですね。
やったことがないのでわかりませんが、難しそうな予感がします。
以下を外せばサクッと外れそうな気もします。
https://github.com/LLK/scratch-blocks/blob/develop/blocks_vertical/default_toolbox.js
  '<category name="%{BKY_CATEGORY_MYBLOCKS}" id="more" colour="#FF6680" secondaryColour="#FF4D6A" custom="PROCEDURE">' +
'</category>' +
※行指定してリンク張るのってどうするのでしょう?

当初はアカウントを親子で共用していましたが、アカウント分離しました。アナウンス内容
父:inoking   子:inotomoking

Powered by DjangoBB

Standard | Mobile