从内存中读取结构

逆向工程 视窗 Python C 结构
2021-06-26 11:05:27

我正在尝试加载在我正在读取内存的程序中定义的结构,因此我可以使用它来定义我的 python 调试器(在 Windows 中)中的对象。

结构在内存中采用什么格式,我可以从查找结构中获得哪些信息。是否可以找到所有属性以及链接到结构的所有对象的偏移量?

我希望能够在不使用断点的情况下做到这一点,但如果没有其他方法,我可以使用它们。

1个回答

您应该使用某种示例输出来提问,这样答案就不会基于猜测。

加载结构是否意味着

  • 我写了一个程序,我使用 OpenProcess() ReadProcessMemory()

或者是什么意思

  • 我正在用 FILE * fp 打开原始文件;fopen("c:\XXX","wb") fread(fp); 或将其加载到 ollydbg 或 hexeditor 中

假设您使用ReadProcessMemory 您提供的缓冲区,将填充字节。您可以将其转换为正确的类型以访问结构的各种成员(是的,您需要事先获得有效的结构原型)。

伪形式可能是这样的

type result;
BYTE foo[0x100];
Mystruct *blah;
int s1;
PSTR s2;
result = ReadProcessMemory(where,howmuch,destination,VerifiactionPointer)
blah = (MyStruct *)destination;
s1 = blah->someint;
s2 = blah->somestring;

您看到的内存将始终包含彼此无法区分的十六进制字节。它就像陶工手中的粘土。

只有工匠才能赋予它形式。粘土本身永远无法成为雕像或制作精良的茶壶。