获取指针数据绑定到地址

时间:2019-06-01 16:21:16

标签: c++ c++11 reverse-engineering disassembly ida

我正在创建一个代码,在该代码中,通过IDA获得的地址,我可以获取可执行文件以返回其结构中某些条目的值。

但是我遇到了一些问题,因为地址是一个指针。

IDA用于反向工程更多信息https://www.hex-rays.com/products/decompiler/

class ConfUserHook : public UserInfo {
public:
    ConfUserHook();

    int GetType() const override;
    int GetMode() const override;

private:
    struct ConfUser 
    {
        int type;
        int mode;
    };
    ConfUser *c_user;
};


ConfUserHook::ConfUserHook() {

    c_user = *reinterpret_cast<ConfUserHook::ConfUser**>(0x63AC30);
}

int ConfUserHook::GetType() const {
    return &c_user->type);
}

int ConfUserHook::GetMode() const {
    return &c_user->mode);
}

我的IDA地址

.data:0063AC30 ; CUser *c_user
.data:0063AC30 c_user      dd ?

当我运行GetType或GetMode时,它们返回的值不正确

例如,

GetMode应该返回1600,但返回36。

如果我直接使用该地址并加上结构的字节,我将获得该值。

无需使用struct即可工作的代码示例:

int ConfUserHook::GetType() const {
        return *(int*)(*(int*)(0x63AC30) + 0x1);
}

但是我想使用结构来获取值,可以通过某种方式实现?

0 个答案:

没有答案