1

现在有几个问题让我的大脑爆炸:从 MODULEENTRY32 结构检索的基地址(从远程进程的快照创建,并引用远程进程的模块)是内存中的真实地址还是相对地址? 如果是相对的,它与什么相关?

第二:远程进程快照中任何其他模块的基地址是相对于远程进程的基地址还是内存中的真实地址?文档说 MODULEENTRY32 结构的 hModule 成员是“在拥有进程的上下文中模块的句柄”,所以我认为这暗示它是一个相对地址,但我不确定。

以防我所说的完全脱离上下文,这里有一些部分代码:

DWORD getProcBaseAddress(DWORD targetPID) {
    hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, targetPID ); 
    MODULEENTRY32 me32;
    me32.dwSize = sizeof( MODULEENTRY32 );
    Module32First( hModuleSnap, &me32 );
    _tprintf( TEXT("Proc Base Address = 0x%08X"), (DWORD) me32.modBaseAddr);
    return (DWORD) me32.modBaseAddr;
}

这可能是功能代码。targetPID 是我的目标进程的进程 ID。无论如何,我的问题是指 modBaseAddr。提前感谢您的任何帮助或考虑。如果您可以向我推荐任何有关相对和物理寻址的好文章或资源,则可以加分:-]

4

0 回答 0