#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(..)。
hProcess是目标进程的句柄,从上面的
OpenProcess
函数中取得的。
lpBaseAddress
是在计算器程序的虚拟内存中将要被修改的地址,也就是使用内存搜索程序找到的那个地址。念备(在我的程序里绝高唯是&H40B181)
lpBuffer
是将要写如上述地址的数据,可以是并培一个数值、数组、字符串或其他任何数据类型。
nSize
是希望写入
lpBaseAddress
的字节数。这个位置应该与你的数据类型相符。如果写入的是一个长整数(
long
),这里应该是4。如果写入的是一个字符串,那么这里应该是字符串的长度。
lpNumberOfBytesWritten
是函数执行返回后,写入目标地址的实际字节数。它能被用来确认函数实际的执行情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)