我有以下代码: https://github.com/DisassembleIDA/GlobalVarribleHelp/blob/main/main.cpp (上传到github是因为stackoverflow说问题描述不充分)
这会挂钩“build”函数,获取其参数,并将它们分配给以下变量:
DWORD* fisrtarg = __this;
DWORD* secondarg = BuildingDef;
DWORD* thirdarg = method;
然后我禁用挂钩(手动)并使用收到的参数调用“buildcall”,但由于某种未知原因,所有三个参数的地址都是 000000000。我怎样才能使它们具有我在执行挂钩时分配的地址? ?
我一直在试图找出问题所在,但我没有找到任何关于我的问题的有用信息。
在此代码中:
DWORD* fisrtarg;
DWORD* secondarg;
DWORD* thirdarg;
bool __cdecl build_h(DWORD* __this, DWORD* BuildingDef, DWORD* method) {
DWORD* fisrtarg = __this;
DWORD* secondarg = BuildingDef;
DWORD* thirdarg = method;
std::cout << fisrtarg << BuildingDef << method << std::endl;
std::cout << "Values gotten!!!" << std::endl;
return true;
}
您有局部变量
firstarg
、secondarg
和 thirdarg
会隐藏全局变量,因此全局变量永远不会被设置