【发布时间】:2021-12-29 12:54:07
【问题描述】:
我正在尝试在 C++ 中做一些脚本挂钩,并为此案例设置了一个简单的测试函数。
void __declspec(naked) testFunct()
{
int myInt;
myInt = 2000;
__asm{
mov eax, myInt
jmp [jmp_back_address]
}
}
使用this传入整数时,函数调用失败,项目崩溃。但是,当使用 this 代替时,没有整数值,它成功通过。
void __declspec(naked) testFunct()
{
__asm{
mov eax, 2000
jmp [jmp_back_address]
}
}
如何才能成功传递整数?
【问题讨论】:
-
第一个版本生成的程序集是什么样子的?
-
用 C++ 编写函数。告诉编译器打印汇编语言。检查参数传递的汇编语言。完成。
-
mov dword ptr ss:[ebp-8],7D0 mov eax,dword ptr ss:[ebp-8] jmp dword ptr ds:[<unsigned long jmp_back_address>] -
地址存储在
jmp_back_address中的代码是做什么的?请提供minimal reproducible example。
标签: c++ assembly visual-c++ x86 inline-assembly