首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过指针和偏移量从类中读取C++

通过指针和偏移量从类中读取C++
EN

Stack Overflow用户
提问于 2014-11-18 00:06:02
回答 1查看 965关注 0票数 2

Ida在伪代码中生成这行代码,我有工作类指针和逆向工程类,但我不想直接从类文件中读取任何东西。

IDA Pro中的示例:

代码语言:javascript
复制
*(_DWORD *)(v3 + 9649) = 1;

// Alignment: 1
class CVehicle
{
    DWORD modelid; // 0
    float pos[3]; // 4
    WORD player; // 16
}

CVehicle *pVehicle;

我知道,如果我想得到player,那么我需要这样做:

代码语言:javascript
复制
pVehicle->player

但是如果我想通过偏移量来获取播放器呢?因为有时我需要按偏移量读取,因为我没有对整个类进行逆向工程。示例

代码语言:javascript
复制
*(WORD*)(pVehicle + 16) // That should work, should return player, but will crash. Why?
EN

回答 1

Stack Overflow用户

发布于 2014-11-18 21:15:07

假设我理解你在帖子中说的话,我会这样做:

标题:

代码语言:javascript
复制
#pragma pack(push, 1)
class CPlayer
{
public:
    unsigned char Unknown00[9649];
    char Unknown9649;
};

class CVehicle
{
public:
    DWORD modelid; // 0
    float pos[3]; // 4
    CPlayer *pPlayer; // 16
};
#pragma pack(pop)

代码:

代码语言:javascript
复制
char SomethingIWant;
CVehicle *pVehicle; // set previously
CPlayer *pPlayer = nullptr;

if (pVehicle)
   pPlayer = pVehicle->pPlayer;
if (pPlayer)
   SomethingIWant = pPlayer->Unknown9649;

然后,您可以只填写类,并发现更多信息。

(免责声明:上面的代码假设pVehicle->pPlayer为nullptr或有效。否则,将需要更多代码来正确验证pPlayer是否有效。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26976784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档