Win2K下的Api函数的拦阻[VC/C++编程]
本文“Win2K下的Api函数的拦阻[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
这么多高手在这里,哎,小弟乐意向各位高手学习.
Api拦阻并非一个新的技术,很多商业软件都采取这种技术.对windows的Api函数的拦阻,不外乎两种办法,第一种是Mr. Jeffrey Richter 的改正exe文件的模块输入节,种办法,很安全,但很复杂,并且有些exe文件,没有Dll的输入标记的列表,有大概呈现拦阻不到的情形.第二种办法就是常用的JMP XXX的办法,固然很陈腐,却很简单实用.
本文一介绍第二种办法在Win2k下的利用.第二种办法,Win98/me 下因为进入Ring0级的办法很多,有LDT,IDT,Vxd等办法,很简单在内存中动态改正代码,但在Win2k下,这些办法都不能用,写WDM太过复杂,表面上看来很难实现,
其实不然.Win2k为我们供应了一个强盛的内存Api操作函数---VirtualProtectEx,WriteProcessMemeory,ReadProcessMemeory,有了它们我们就可以在内存中动态改正代码了,其原型为:
BOOL VirtualProtectEx(
HANDLE hProcess, // 要改正内存的进程句柄
LPVOID lpAddress, // 要改正内存的起始地址
DWORD dwSize, // 改正内存的字节
DWORD flNewProtect, // 改正后的内存属性
PDWORD lpflOldProtect // 改正前的内存属性的地址
);
BOOL WriteProcessMemory(
HANDLE hProcess, // 要写进程的句柄
LPVOID lpBaseAddress, // 写内存的起始地址
LPVOID lpBuffer, // 写入数据的地址
DWORD nSize, // 要写的字节数
LPDWORD lpNumberOfBytesWritten // 实际写入的子节数
);
BOOL ReadProcessMemory(
HANDLE hProcess, // 要读进程的句柄
LPCVOID lpBaseAddress, // 读内存的起始地址
LPVOID lpBuffer, // 读入数据的地址
DWORD nSize, // 要读入的字节数
LPDWORD lpNumberOfBytesRead // 实际读入的子节数
);
以上是“Win2K下的Api函数的拦阻[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |