要在DLL中使用的结构地址

时间:2013-04-15 12:02:25

标签: c++ struct lua

我有结构的地址(我认为它很好)0040336C 我试图在DLL中使用它,我注入了一些程序(地址是)

这真的是试验性的,因为我试图获得lua_State地址。

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

lua_State* L = (lua_State*)0x0040336C;

我试过这种方式,但程序在我注入后崩溃了。

(调试器说的是什么)

  

0x003a19e8处的未处理异常   midaslua.exe:0xC0000005:访问冲突读取位置   0x443de713。

1 个答案:

答案 0 :(得分:0)

您引用的第一个地址是DLL数据部分中struct 的地址,但您尝试取消引用的地址是进程内存中的地址 。这两个地址是不是的同类,所以不可能像你那样使用它们。

实际上,您尝试取消引用一段内存,其中应用程序可能存储或不存储某些数据,并将此内存视为lua_State(很可能不是这样)。这导致了未定义的行为,以AV结束。

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