PID是Process ID的缩写,每个正在运行的软件都会有各自的PID,类似于身份证号。只要进程被运行,操作系统会给每个运行的进程分配一个数字标识符。获得PID就可以对指定的进程进行内存修改,附加调试器等等操作。正常情况下打开Windows系统的任务管理器就能看到所有进程的PID信息:
模块基址(Module Base Address)指的是被加载到内存中程序的内存空间起始地址。每打开一个进程操作系统除了分配PID之外还会给程序分配一段内存地址用来存放程序的代码和数据。这个内存地址的起点就是模块基址。PID是身份证号情况下模块基址相当于是家庭住址。
PID和模块基址对于逆向分析和内存分析来说至关重要,下面我会介绍外部程序(.exe程序)和DLL注入(内部注入)获取程序的PID和模块基址的具体方法。
一,外部程序1.PID获取Windows API 外部程序主要是通过调用 Windows API 的方式来获取其他程序的所有信息。要获取PID有几个API需要先了解分别是CreateToolhelp32Snapshot 函数:
1234HANDLE CreateToolh ...