现在突然爆发我的大脑的一些问题:是从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。提前感谢您的任何帮助或考虑。如果您可以向我推荐任何关于相对和物理寻址的好文章或来源,可以给予奖励积分: - ]