在DLL中使用的结构地址
Struct address to use in DLL
我已经得到了结构体的地址(我认为它是好的)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:访问冲突读取位置0 x443de713。
您引用的第一个地址是DLL数据段内的结构体的地址,但您试图解引用的地址是进程内存中的地址。这两个地址不是同一类型的,所以不可能像你那样使用它们。
实际上,您尝试解引用一块内存,其中应用程序可能存储了一些数据,也可能没有存储一些数据,并将这块内存视为lua_State
(很可能不是)。这导致了未定义的行为,最终导致AV。
很难(甚至不可能)在内存中找到一个位置,这个变量存储在进程的内存中。
相关文章:
- 使用内存地址访问结构的属性值
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 指向结构的指针向量的元素具有相同的地址
- 如何获取结构体成员的地址
- 释放指向保留嵌套变量内存地址的结构的指针
- C++可以输出一个结构的内存地址吗
- 使用来自 C 的内存地址的 Julia 读取/写入结构数据
- 结构指针在"新"调用上给出已分配的地址?
- 使用指向结构变量成员的指针访问该结构的成员的地址
- 不太明白 & 运算符的地址在这个结构中做什么,以及它如何能够访问其他成员变量
- 函数中的结构指针的地址为0x1
- 无法找出此错误(将结构数组传递给函数):线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x1)
- C :变量的点地址至指针结构成员的地址
- 结构成员的地址作为编译时间常数之间的差异
- 将结构元素地址设置为C 中的null(单链接列表)
- C 在8086中获取类/结构地址
- C++ 套接字:结构地址的大小
- 删除结构数组,更改结构地址
- 在DLL中使用的结构地址