0

私は構造体のアドレスを持っています(私はそれが良いと思います)0040336C私はいくつかのプログラムに注入しているDLLでそれを使用しようとしました(アドレスがある場所)

lua_State アドレスを取得しようとしているので、これは本当に実験的なものです。

data:0040336C ?L@@3PAUlua_State@@A dd ?               ; DATA XREF: _main+Cw

lua_State* L = (lua_State*)0x0040336C;

この方法を試しましたが、注入した直後にプログラムがクラッシュします。

(デバッガーの言うこと)

midaslua.exe の 0x003a19e8 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x443de713。

4

1 に答える 1

0

最初に引用したアドレスは、DLL のデータ セクション内の構造体のアドレスですが、逆参照しようとしているアドレスは、プロセスのメモリ内のアドレスです。これら 2 つのアドレスは同じ種類ではないため、あなたのように使用することはできません。

事実上、アプリケーションがデータを格納している場合と格納していない場合があるメモリの一部を逆参照しようとし、このメモリの一部を として処理しましたlua_State(ほとんどの場合、そうではありません)。その結果、未定義の動作が発生し、AV が発生しました。

この変数がプロセスのメモリに格納されているメモリ内の場所を見つけるのは困難です (おそらく不可能です)。別のアプローチをお勧めします。

于 2013-04-15T12:07:10.060 に答える