Discuss Scratch

yu-yu0202
Scratcher
100+ posts

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

TNTSuperMan wrote:

#893
追記:すみません、projects.scratch.mit.eduなどのAPI系のことでしたか?
そこはデフォルトでいいとおもいますが…?自分はまだよくわからないです。

もうちょっと詳細に質問してほしいです。
APIのことです、不正確な質問をしてしまい申し訳ないです。
完全にScratchとAPI系を切り離してサイトを構築したくてこのような質問をさせていただきました。
inoking
Scratcher
1000+ posts

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

Black-takashi_01 wrote:

まえ、どこかのディスカッションフォーラムで
https://scratch.mit.edu/users/Black-takashi_01/favorites/の
好きなプロジェクト版のリンクを見たんですが、どんなのかどなたかわかりますかね?
この辺を読んでみてください。
inoking
Scratcher
1000+ posts

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

Scratchスクリプトクイズ #3221 より:

inoking wrote:

この動作は
メッセージの受信処理が完了していないときに再度メッセージを受け取った場合の動作(再度、頭から実行される)と
「ずっと」による待ちの処理、
それに
[スプライトの他のスクリプトを止める v]
の動作が絡んで、かなりトリッキーになっていますね。
実行環境に依存するかもしれません。
メッセージの受信処理が完了していないときに 再度メッセージを受け取った場合の動作は
以下のようになっているようです。
・通常、即、頭から再実行される
・待ち状態のときは、解除に1フレーム?を要してから、頭から再実行される

私は前者だけだと思っていたのですが、後者のパターンもあるようです。
サンプルを作ったので試してみてください。
メッセージ処理中に同じメッセージを受信したときの動作

これは今まで出ていなかった情報かと思います。
abee
Scratcher
1000+ posts

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

Scratchのソースコードライセンスが、三条項BSDライセンスからAGPLに変更されました。今後、MODにソースコード公開義務が生じます。これはソースコードを公開していない一部の商用MODに影響があると思われます。
Open Source Policy — Scratch Foundation
一般の利用者には影響ありません。
今回の変更にScratch Blocksは含まれていないため、見た目がScratchと同じだけのMakeCodeなどにも影響はありません。ScratchJr、Scratch 1.4、2.0も変わっていません。

Last edited by abee (Nov. 27, 2024 05:53:57)

5656godzilla
Scratcher
13 posts

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

enterキーなど一部の元々Scratchの判定で判定することができるキーはハックで出せるみたいです。
<key [enter v] pressed?>
when [enter v] key pressed
などのブロックですね。
だれでも知ってると思うけど((((
TNTSuperMan
Scratcher
100+ posts

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

#897
enterを入れるとエンターキーを検出できるハックは仕様っぽいです。
scratch-vm/src/io/keyboard.js
キーの部分がenterになっているとEnterキーを検出するようなコードが見られました。

それを言うと以下のようなものもあります。
<key [space] pressed?>//スペースキー
<key [left arrow] pressed?>//左矢印キー
そしてここ以外で2文字以上のキーが指定されたらブロックするようになってました。
なので@等の記号は使えるが他のAltやCtrlは使えない、ということでしょうか。
追記:5年前にspl237さんが意図的にenterキーを検出するコードを入れいていました。

Last edited by TNTSuperMan (Nov. 27, 2024 11:07:59)

inoking
Scratcher
1000+ posts

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

5656godzilla wrote:

enterキーなど一部の元々Scratchの判定で判定することができるキーはハックで出せるみたいです。
「JSON ハック」による「ハッキングブロック」は Scratch 3.0 の時点で できなくなった/まだできる
という話がありました(例えば #527)。
できたというのなら、その例を提示してください。

TNTSuperMan wrote:

#897
enterを入れるとエンターキーを検出できるハックは仕様っぽいです。
ここでの話は「ハッキングブロック」の話です。

Last edited by inoking (Nov. 27, 2024 15:12:22)

TNTSuperMan
Scratcher
100+ posts

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

#899
こういうことだと思ってました。すいません。
<([enter]と()) キーが押された>

Last edited by TNTSuperMan (Nov. 28, 2024 00:44:05)

_0xfffrog-
Scratcher
100+ posts

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

#893

scratch-www on Github wrote:

To use it for your own project, you would have to look at all the places it makes backend calls, and create your own backend systems to perform those functions.
ここで“backend systems”とはapi.scratch.mit.edu, project.scratch.mit.edu, scratch.mit.edu/site-api/*, clouddata.scratch.mit.eduなどのことです。
「自分で作るしかない」らしいです。わたしが探した限りでは誰もapiのクローンを公開していないようです。
yu-yu0202
Scratcher
100+ posts

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

#901
ありがとうございます。
やはり公開していないんですね。
自分で作るしかないのか…
TNTSuperMan
Scratcher
100+ posts

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

#901
一応質問しますが、そのAPI群を作って公開することは許可されていますよね…?
_0xfffrog-
Scratcher
100+ posts

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

#892 (旧#903) 10postを一気に削除とはこれ如何に
@Voxaliceさんによると、

@Voxalice wrote:

Yes, if you manage to recreate Scratch's back-end code, you would be allowed to share that.

The reason that there are no public recreations of Scratch's API is because nobody has shared one yet.

訳) スクラッチのバックエンドをもし再現して構築できたなら、公開してもよいでしょう。
Scratch APIを再現したものがまだ公開されていないのは、だれもまだ共有していないからです。
とのことで、STからの公式発言ではないものの、わたしはこの内容に納得がいきました。

“Manage to recreate and share” すれば最初の公開者になれます。
TNTSuperMan
Scratcher
100+ posts

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

#892
了解です。
bun+honoとかで作ってみようかな。
でも

@Voxalice wrote:

Scratch APIを再現したものがまだ公開されていないのは、だれもまだ共有していないからです。
っていうのは小泉構文を連想しましたつまりまだ誰も公開してないってだけなんですね。
hiroto1356
Scratcher
3 posts

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

定義 
ってやると赤いやつ出るよ
nakasyou1103
Scratcher
68 posts

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

Scratch のプロジェクトページから任意のコンポーネントを取得することに成功したので共有します。
export interface ReactFiber {
	child: ReactFiber | null
	sibling: ReactFiber | null
	// biome-ignore lint/complexity/noBannedTypes:
	type: string | Function
	// biome-ignore lint/complexity/noBannedTypes:
	elementType: Function & {
		propTypes: Record<string, unknown>
	}
}
export function getReactRootFiber() {
	const app = document.getElementById('app')
	if (!app) {
		return null
	}
	// biome-ignore lint/suspicious/noExplicitAny:
	const root = (app as any)._reactRootContainer._internalRoot
		.current as ReactFiber
	if (!root) {
		return null
	}
	return root
}
export function getSpecifiedFiber(
	root: ReactFiber,
	cond: (fiber: ReactFiber) => boolean,
) {
	const stack = [root]
	while (true) {
		const fiber = stack.pop()
		if (!fiber) {
			return null
		}
		if (cond(fiber)) {
			return fiber
		}
		if (fiber.child) {
			stack.push(fiber.child)
		}
		if (fiber.sibling) {
			stack.push(fiber.sibling)
		}
	}
}

removed

Last edited by nakasyou1103 (May 6, 2025 04:14:29)

inoking
Scratcher
1000+ posts

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

みなさんへ:
システムの改ざんを可能とするような情報は決して投稿しないでください。

#1 にも追記します(こんなことを書かないといけないとは (-_-) )。
TNTSuperMan
Scratcher
100+ posts

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

#897
“システム”の範囲が良くわからないので分からないですね…
多分クラウド変数の改ざんにあたると思いますが…
kuriiiiii
Scratcher
3 posts

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

リンクを貼り直します
https://scratch.mit.edu/projects/1167729594/

Last edited by kuriiiiii (May 6, 2025 07:05:43)

kuriiiiii
Scratcher
3 posts

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

なるほど、クラウド変数の改ざんはスクラッチの何らかのルールやコミュニティーガイドラインに違反する行為なのですか?もしそうであるなら対処方法を教えていただきたいです。

Powered by DjangoBB