0

我有 struct 的地址(我认为它很好) 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 数据部分内的结构地址,但您尝试取消引用的地址是进程内存中的地址。这两个地址不是同一类型的,所以不可能像你一样使用它们。

实际上,您尝试取消引用一块内存,应用程序可能已经或可能没有存储一些数据并将这块内存视为lua_State(很可能不是)。这导致了未定义的行为,最终出现了 AV。

很难(甚至不可能)在内存中找到一个位置,该变量存储在进程的内存中。建议使用另一种方法。

于 2013-04-15T12:07:10.060 回答