我正在创建一个代码,在该代码中,通过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);
}
但是我想使用结构来获取值,可以通过某种方式实现?