私が作ったこの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