Ida在伪代码中生成这行代码,我有工作类指针和逆向工程类,但我不想直接从类文件中读取任何东西。
IDA Pro中的示例:
*(_DWORD *)(v3 + 9649) = 1;
// Alignment: 1
class CVehicle
{
DWORD modelid; // 0
float pos[3]; // 4
WORD player; // 16
}
CVehicle *pVehicle;我知道,如果我想得到player,那么我需要这样做:
pVehicle->player但是如果我想通过偏移量来获取播放器呢?因为有时我需要按偏移量读取,因为我没有对整个类进行逆向工程。示例
*(WORD*)(pVehicle + 16) // That should work, should return player, but will crash. Why?发布于 2014-11-18 21:15:07
假设我理解你在帖子中说的话,我会这样做:
标题:
#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;然后,您可以只填写类,并发现更多信息。
(免责声明:上面的代码假设pVehicle->pPlayer为nullptr或有效。否则,将需要更多代码来正确验证pPlayer是否有效。)
https://stackoverflow.com/questions/26976784
复制相似问题