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