SSブログ

孤独へ向って突っ走れ (25) [  PC-98x1(補完計画)]

私はプログラムを組んだ。t.exeを読み込み、コードセグメントにロードされる部分以降でCALL 6FECに相当するコードを見つけ、そのオフセットを書き出すプログラムだ。near callの場合、アセンブラで記述する時にラベルを使うと絶対オフセットではなくIPからの相対オフセットで機械語になるのをうまく計算してCALL 6FEC相当の3バイトを見つけ出すのがミソだ。途中、出力先のファイルに何も書き出されないという問題に頭を悩ませながら、Unicodeを使ったのにsetlocale()をすっかり忘れていた自分を情けなく思いつつ、なんとか目的は達成した。以下の行が、プログラムによって書き出された結果だ。



探すコードは CALL 6FEC

該当するコードを発見 CS:0014
該当するコードを発見 CS:0126
該当するコードを発見 CS:014E
該当するコードを発見 CS:0163
該当するコードを発見 CS:017F
該当するコードを発見 CS:019E
該当するコードを発見 CS:01AF
該当するコードを発見 CS:01E9
該当するコードを発見 CS:0292
該当するコードを発見 CS:02C9
該当するコードを発見 CS:02F6
該当するコードを発見 CS:04E2
該当するコードを発見 CS:095D
該当するコードを発見 CS:4064
該当するコードを発見 CS:4097
該当するコードを発見 CS:40C6
該当するコードを発見 CS:5D25
該当するコードを発見 CS:5D9B
該当するコードを発見 CS:5DBC
該当するコードを発見 CS:5EA5
該当するコードを発見 CS:5F16
該当するコードを発見 CS:5F30
該当するコードを発見 CS:6011
該当するコードを発見 CS:602E
該当するコードを発見 CS:604B
該当するコードを発見 CS:72AD
該当するコードを発見 CS:72E5
該当するコードを発見 CS:730F
該当するコードを発見 CS:7742
該当するコードを発見 CS:776A
該当するコードを発見 CS:7D41
該当するコードを発見 CS:7DEF
該当するコードを発見 CS:7E42
該当するコードを発見 CS:888F
該当するコードを発見 CS:88B7
該当するコードを発見 CS:88F1
該当するコードを発見 CS:8936
該当するコードを発見 CS:A52C
該当するコードを発見 CS:A548
該当するコードを発見 CS:A556
該当するコードを発見 CS:A582
該当するコードを発見 CS:A590
該当するコードを発見 CS:A5D9
該当するコードを発見 CS:A5E7
該当するコードを発見 CS:A630
該当するコードを発見 CS:A63E
該当するコードを発見 CS:A687
該当するコードを発見 CS:A695
該当するコードを発見 CS:A766
該当するコードを発見 CS:A782
該当するコードを発見 CS:A790
該当するコードを発見 CS:A7F9
該当するコードを発見 CS:A807
該当するコードを発見 CS:A870
該当するコードを発見 CS:A87E
該当するコードを発見 CS:A94B
該当するコードを発見 CS:A9AA
該当するコードを発見 CS:A9B1
該当するコードを発見 CS:A9B8
該当するコードを発見 CS:A9D6
該当するコードを発見 CS:AA02
該当するコードを発見 CS:AA83
該当するコードを発見 CS:AAAF
該当するコードを発見 CS:AB2E
該当するコードを発見 CS:AB69
該当するコードを発見 CS:AF13
該当するコードを発見 CS:B0EF
該当するコードを発見 CS:B19B
該当するコードを発見 CS:B246
該当するコードを発見 CS:B2ED
該当するコードを発見 CS:B314
該当するコードを発見 CS:B398
該当するコードを発見 CS:B5CC
該当するコードを発見 CS:B7DC
該当するコードを発見 CS:BBDB
該当するコードを発見 CS:BDBC
該当するコードを発見 CS:BE75
該当するコードを発見 CS:BF72
該当するコードを発見 CS:C070
該当するコードを発見 CS:C556
該当するコードを発見 CS:C64C
該当するコードを発見 CS:D156
該当するコードを発見 CS:D7DA
該当するコードを発見 CS:D8CA
該当するコードを発見 CS:D913
該当するコードを発見 CS:DC20
該当するコードを発見 CS:DC82
該当するコードを発見 CS:DCE4
該当するコードを発見 CS:E41A
該当するコードを発見 CS:E453
該当するコードを発見 CS:E49D
該当するコードを発見 CS:E976

わあーい、たくさん出てきたぞ。この結果からわかることは、最初からコードを辿って解析していたら、私はとてもじゃないが目的にたどり着けなかったということだ。そんなことをしたら何年かかっていたことか。そしてついには止めてしまっただろう。

上のCALLから後のコードをしらみ潰しに解析するのだって、果たして気力がもつかどうか。

PC-98全盛時代に、ゲームプログラムを解析してズルをして先へ行くのを毛嫌いしている人がいた。確かに一般的な感覚ではそれはズルだ。でも私には、自分のプログラミングレベルでは出来ない羨望の対象だった。ズルを毛嫌いする人は、そのズルのためにこうやって何ヵ月かかるかわからない解析を来る日も来る日も続けなきゃならないとは夢にも思っていないだろう。きっと、チョチョイのチョイと片手間にやっていると思っていただろう。そりゃあ結果だけをパッチとかいう形で使う人はチョチョイのチョイだろうけど、解析する側はそんなんじゃない。少なくとも私のレベルでは、先に成功が待っているか失敗が待っているかわからない作業だ。でも私より出来るプログラマーの背中を見つめて羨ましく思いながら、自分もそのレベルに追いつきたいと頑張る。学習する価値のある学問だと信じる。じつは今回、ニーモニックではなく機械語のバイトを扱って、初めて私はホッとした。やっと自分が学びたかった領域に手が届いた。もしもゲームなら、私個人はそれをここまで情熱的にプレイすることはできない。私はゲーマーではなくプログラマーとしてしか生きられない。

コメント(0) 

コメント 0

コメントの受付は締め切りました