アカウント名:
パスワード:
秀和システムトレーディングの逆アセ解析本も思い出してあげてください
ソースコードがアセンブリなんだから、実質的な価値はコメント部分だけ、ってことですから。
8086で開発して、デフォでZ80のエミュを積んでいるっていう構成も興味深いですが、当時の利用者には当然のことだったんでしょうね。
うーん...。経験がない人にはそう思えるのは仕方ないのかもしれませんが、実際はそこまで簡単な話でもありません。アセンブラで書かれたときに存在していた構造体やワーク領域などの各種ラベルなどがすべて失われているので、単に逆アセンブルするだけでは済まないのです。これらの情報を意味ある形にまとめなおすのは、それなりに骨が折れるし、経験も必要とされるんですよ。
例えばジャンプテーブル。これはどこまでがテーブルでどこからコードなのだろうか、とか、自動ではなかなか判断できません。となると、このジャンプテーブルはどの値の範囲であることを求められているのか、といったことを目視で確認して手動計算したりする必要があるわけです。
また、明確にデータとコードが分かれていませんから、それぞれがいったいどちらの何なのかを分けなければなりません。
そもそもとして、アセンブリ言語自体がそれほど可読性が高くないですしね。本質的な処理以外にレジスタの数の制限などでやりくりするコードが入るので、本来の処理だけを追えるわけでもなかったりとか...。
この場合はMS-DOSのことを言っているんでしょうが、動的に配置されるコード、例えばデバイスドライバやアプリケーションとの接合部分や、明示されていないBIOSや隠しシステムコールの呼び出しとか、実にいろいろなハードルがあります。
一度それほど大規模ではないプログラム、例えば8~16キロバイトのCOM形式の実行ファイルでやってみると、そこまで簡単な話ではないことがわかると思いますよ。
それどころか、自己書き換えコードになってると聞いてますが……。
エロゲを逆アセンブルして、モザイク模様のアニメーションルーチンを潰したりしたっけなぁ…どうやってその箇所を特定したのかまったく覚えてないけど、エロパワー恐るべし。モザイクは消えたけど、何も描かれておらずツンツルテンだったというオチがつきますが…orz
ランス3は楽でした。セーブデータの0の箇所を1で埋めていくだけでメッシュ外れたので。もしかしたら特定のキーを入力するなどで外せたのかも知れませんね。
当初の目的はラレラレ石を集めるのが面倒だったからでしたが、偶然外れてラッキーでした。
闘神都市あたりはモザイクをはずすとスジが見えたと思いますが、ちゃんと怒られてると思いますよ
「アニメーション外したら絵自体がモザ済みだった」というオチはなかったのかな?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
解析本 (スコア:0)
秀和システムトレーディングの逆アセ解析本も思い出してあげてください
Re: (スコア:0)
ソースコードがアセンブリなんだから、実質的な価値はコメント部分だけ、ってことですから。
8086で開発して、デフォでZ80のエミュを積んでいるっていう構成も興味深いですが、当時の利用者には当然のことだったんでしょうね。
Re:解析本 (スコア:2, 参考になる)
うーん...。経験がない人にはそう思えるのは仕方ないのかもしれませんが、実際はそこまで簡単な話でもありません。
アセンブラで書かれたときに存在していた構造体やワーク領域などの各種ラベルなどがすべて失われているので、単に逆アセンブルするだけでは済まないのです。
これらの情報を意味ある形にまとめなおすのは、それなりに骨が折れるし、経験も必要とされるんですよ。
例えばジャンプテーブル。
これはどこまでがテーブルでどこからコードなのだろうか、とか、自動ではなかなか判断できません。
となると、このジャンプテーブルはどの値の範囲であることを求められているのか、といったことを目視で確認して手動計算したりする必要があるわけです。
また、明確にデータとコードが分かれていませんから、それぞれがいったいどちらの何なのかを分けなければなりません。
そもそもとして、アセンブリ言語自体がそれほど可読性が高くないですしね。
本質的な処理以外にレジスタの数の制限などでやりくりするコードが入るので、本来の処理だけを追えるわけでもなかったりとか...。
この場合はMS-DOSのことを言っているんでしょうが、動的に配置されるコード、例えばデバイスドライバやアプリケーションとの接合部分や、明示されていないBIOSや隠しシステムコールの呼び出しとか、実にいろいろなハードルがあります。
一度それほど大規模ではないプログラム、例えば8~16キロバイトのCOM形式の実行ファイルでやってみると、そこまで簡単な話ではないことがわかると思いますよ。
Re:解析本 (スコア:1)
それどころか、自己書き換えコードになってると聞いてますが……。
Re:解析本 (スコア:1)
エロゲを逆アセンブルして、モザイク模様のアニメーションルーチンを潰したりしたっけなぁ…
どうやってその箇所を特定したのかまったく覚えてないけど、エロパワー恐るべし。
モザイクは消えたけど、何も描かれておらずツンツルテンだったというオチがつきますが…orz
Re: (スコア:0)
Re: (スコア:0)
ランス3は楽でした。セーブデータの0の箇所を1で埋めていくだけでメッシュ外れたので。
もしかしたら特定のキーを入力するなどで外せたのかも知れませんね。
当初の目的はラレラレ石を集めるのが面倒だったからでしたが、偶然外れてラッキーでした。
Re: (スコア:0)
闘神都市あたりはモザイクをはずすとスジが見えたと思いますが、ちゃんと怒られてると思いますよ
Re: (スコア:0)
「アニメーション外したら絵自体がモザ済みだった」というオチはなかったのかな?