gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:56 26 4
gpt4 key购买 nike

Ida pro 以伪代码生成这一行,我有工作类指针和反向工程类,但我不想直接从类文件中读取某些内容。

IDA Pro 中的示例:

*(_DWORD *)(v3 + 9649) = 1;

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

CVehicle *pVehicle;

我知道,如果我想获得播放器,那么我需要这样做:

pVehicle->player

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

*(WORD*)(pVehicle + 16) // That should work, should return player, but will crash. Why?

最佳答案

假设我理解您在帖子中所说的内容,我会这样做:

标题:

#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)

代码:

char SomethingIWant;
CVehicle *pVehicle; // set previously
CPlayer *pPlayer = nullptr;

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

然后,您可以随时填写类(class)并发现更多信息。

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

关于C++通过其指针和偏移量从类中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26976784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com