C语言怎么让找到一个进程在内存中的起始地址

2025-04-15 01:21:46
推荐回答(1个)
回答1:

//获取模块基址可以使用windows api函数GetModuleHandle

#include "stdafx.h"
#include "windows.h"
#include "process.h"
int main(int argc, char* argv[])
{   //获取模块基址
    HMODULE hmou = ::GetModuleHandle(NULL);
    long int addr = (long int)hmou;
    printf("进程基址:0X%0X\n", addr);
    system("pause");
    return 0;
}

HMODULE GetModuleHandle (LPCTSTR  lpModuleName);

▲功能说明:获取一个应用程序或动态链接库的模块句柄

▲参数说明:lpModuleName 模块名称

▲返回值:如执行成功成功,则返回模块句柄。零表示失败。通过GetLastError获得错误信息

如:

GetModuleHandle(NULL);

这将返回自身应用程序句柄

▲注意:

前提是:只有欲获取的模块已映射到调用该函数的进程内,才会正确得到模块句柄。常用模块映射函数:LoadLibrary(..)。