我有我制作的这个DLL。它被注入另一个进程。在另一个进程中,我使用以下函数从它的内存空间中进行搜索:
void MyDump(const void *m, unsigned int n)
{
const char *p = reinterpret_cast(m);
for (unsigned int i = 0; i < n; ++i) {
// Do something with p[i]...
}
}
现在我的问题。如果目标进程使用数据结构,假设
struct S
{
unsigned char a;
unsigned char b;
unsigned char c;
};
它在进程的内存中总是以相同的方式呈现吗?我的意思是,如果 Sa = 2(始终遵循 b = 3,c = 4),是在进程的内存空间中以连续行呈现的结构,例如
Offset
---------------------
0x0000 | 0x02 0x03 0x04
或者这些变量可以在不同的地方,比如
Offset
---------------------
0x0000 | 0x00 0x02 0x00
0x03fc | 0x00 0x03 0x04
如果是后者,如何从内存中的各个点重建数据结构?
非常感谢,
nhaa123