ASM,与ASM
问题描述:
调用函数我想打电话与ASM的函数,而在地址774a7fdch(KERNEL32.DLL功能)的C++程序ASM,与ASM
内我使用Visual Studio 2010。
我该怎么办?
call 774a7fdch
不起作用,我该如何通过调用函数地址?
谢谢!
答
工作,我已经在VS2010以前也遇到过同样的问题。 尝试调用[0x774a7fdc]
答
应与
call dword ptr 0x774a7fdc
答
请注意CALL指令,它取决于位置。它的编码为:
E8 XX XX XX XX
其中x是距离从下一条指令,我们在调用函数的地址的内存地址。这个距离也被称为增量偏移量。
如果你不知道你的代码将在存储器中,以便做计算,你可以尝试在寄存器中加载地址,而不是:
mov eax, 774a7fdch
call eax
这将是7个字节,而不是5 ,但是。
另外,正如另一位用户指出的,对函数地址进行硬编码可能是一个坏主意,因为它们可以四处移动。
我不知道这是否能解决您的问题,因为我不确定您的意思是“不起作用”。
它说: “不正确的操作数类型” ...:S – Taru 2012-02-04 14:09:15
@TaruStolovich MOV EBX,0x774a7fdc 调用EBX 作品? – farnsworth 2012-02-04 14:18:57