DLLのBASEアドレスを変更する実験
海外版の kernel32.dll は 言語リソース以外に 日本語版と大きな違いが1つあります。
それは、言語ごとに、プログラムのBASEアドレスが違うのです。
例えば、Windows 2000 日本語版の場合 77E50000 ですが、英語版の場合 7C570000になります。
他にも、この影響を受けて、さまざまなDLLのBASEアドレスが違います。
改造版の KERNEL32.DLLを簡単に移植しようと思ったのですが、BASEアドレスが異なるために、大量の書き換えが必要だったのですが、PEMaker(仮)で、再配置テーブルを元に、BASEアドレスを書き換えてしまう機能をつけてみました。
動作確認できないのでノーチェックですが、英語版のv5カーネル作成してみました。
Windows 2000 Kernel32 改造計画
Comments