结构体地址,用于DLL。

我得到了一个指向结构体的地址(我认为它是个好的地址)0040336C。我试图在注入到某个程序中的 DLL 中使用它(它就在那个程序的地址中)。

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

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

lua_State* L = (lua_State*)0x0040336C;

我尝试了这种方式,但程序注入后就立即崩溃了。

(调试器说的)

Unhandled exception at 0x003a19e8 in midaslua.exe: 0xC0000005: Access violation reading location 0x443de713。

点赞
用户453803
用户453803

第一个地址引用的是一个 DLL 数据段内的结构体地址,但你尝试解引用的地址在进程内存中。这两个地址的类型不同,所以不能像你这样使用它们。

实际上,你试图解引用一块内存,其中应用程序可能已经存储了一些数据,并将这块内存视为“lua_State”(这大概率不是它的真实类型)。这导致了未定义的行为,最终导致“AV”。

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

2013-04-15 12:07:10