Minhook,全局变量的问题。 C++

问题描述 投票:0回答:1

我有以下代码: https://github.com/DisassembleIDA/GlobalVarribleHelp/blob/main/main.cpp (上传到github是因为stackoverflow说问题描述不充分)

这会挂钩“build”函数,获取其参数,并将它们分配给以下变量:

DWORD* fisrtarg = __this;
DWORD* secondarg = BuildingDef;
DWORD* thirdarg = method;   

然后我禁用挂钩(手动)并使用收到的参数调用“buildcall”,但由于某种未知原因,所有三个参数的地址都是 000000000。我怎样才能使它们具有我在执行挂钩时分配的地址? ?

我一直在试图找出问题所在,但我没有找到任何关于我的问题的有用信息。

c++ winapi hook reverse-engineering
1个回答
0
投票

在此代码中:

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
会隐藏全局变量,因此全局变量永远不会被设置

© www.soinside.com 2019 - 2024. All rights reserved.