我想在C++程序中使用ASM调用地址为774a7fdch(kernel32.dll函数)的函数
我使用的是Visual Studio 2010。
我该怎么做呢?
call 774a7fdch不工作,我怎么能传递调用函数的地址?
谢谢!
发布于 2013-01-13 12:20:54
我以前在VS2010中遇到过同样的问题。尝试调用0x774a7fdc
发布于 2013-01-13 23:44:29
注意CALL指令,它依赖于位置。它被编码为:
E8 XX XX XX XX其中X是从下一条指令的内存地址到要调用的函数的地址之间的距离。此距离也称为增量偏移。
如果您不知道代码将在内存中的什么位置进行计算,您可以尝试将地址加载到寄存器中:
mov eax, 774a7fdch
call eax不过,这将是7个字节而不是5个字节。
此外,正如另一位用户指出的那样,硬编码函数的地址可能不是一个好主意,因为它们可能会到处移动。
我不知道这是否解决了你的问题,因为我不确定你所说的“不工作”是什么意思。
发布于 2012-02-04 21:57:07
应该与
call dword ptr 0x774a7fdchttps://stackoverflow.com/questions/9141256
复制相似问题