0

找到了一些类似的帖子,但没有一个针对我的具体问题。

我正在尝试从外部进程内存中读取数据结构。我已经使用 OpenProcess 来获取句柄,并且我的读取内存的函数非常简洁,但是在组装了要读取的第一个结构(应该是 0xC0 字节)之后,我正在调用 sizeof(structure) 并获得两倍的值。如果有帮助,结构如下。希望有人能指出我正确的方向。

谢谢

struct BattleListEntry
{
    int CID;
    wstring Name;
    byte* unknown[16];
    int z, y, x;
    byte* unknown2[8];
    int Direction;
    int TimeLastMoved;
    int rnd3, rnd4, rnd5, rnd6;
    int isWalking;
    byte* unknown3[12];
    int Outfit1, Outfit2, Outfit3, Outfit4, Outfit5;
    byte* unknown4[24];
    int HpPct; // 40 * 4 from start
    int rnd7;
    int rnd8;
    //byte* unknown5[12];
    int rnd9, rnd10, rnd11, rnd12, rnd13, rnd14, rnd15, rnd16, rnd17, rnd18;
};
4

2 回答 2

1

您似乎认为这byte* unknown[16]是 16 字节大。事实上,它的16*sizeof(void*)字节很大。它不是字节数组,而是指针数组。

于 2013-08-03T23:59:29.837 回答
0

您在结构中使用的类型并非都是固定大小的。例如;

byte* unknown[16];

您可以尝试最小化变体大小的类型并将它们放在最后,并更好地使用标签来声明它们的大小。

于 2013-08-03T23:55:32.610 回答