新しい開発環境で古いIDEが動かない
Borland C++Builder 、スペシャルねこまんま57号などが、仕事で新しくきた開発環境で動作しないので調べてみたよ。
今回は、Access violation at address 0013F98B. Write of address 0013F98B なんて出てる。
とりあえず、Visual Studio でデバッグ、アドレス 0x0013f48b がCALLされたところでエラー。
書き込み違反でエラーが出てたけど、どうやら実行エラーのようだ。
つまり、原因は、DEPの可能性が高いということ。
なんか、すべてのプログラムにDEPを適用する設定になっていたので、C++Builder とねこまんま追加してみると動いたよ。
改めて確認してみると、アドレス 0013FXXX には読み書きのみで、実行権限がない。これが原因のようですね。
多分、Heap で割り当てたメモリ領域にコードを置いて実行しようとしたりしたのではないだろうか。 実行するためには、VirtualAlloc しなくてはならないのだ|・ω・)
実はこのソフト自体がPackされています。
うさみみとねこまんまはUnpack出来たけど、ねこまんまはクラック対策らしき箇所が多かったので潰したら動きましたよ。
GDIオブジェクトをCloseHandleしたりと雑な作りになっていたのが気になっていましたが。
こちらで改造したバイナリはWindows 7 64bitのDEP有効でも問題なく動作しました。(当然32bitプロセスしか読めないですけど)