使用AppInit_DLLs加载DLL进行API Hook
例子是由CodeProject下载,利用API Hook技术,拦截替换了系统NtQuerySystemInformation函数,在替换的函数中将Windows系统计算器进程calc.exe过滤,当我们打开任务管理器或者一些使用NtQuerySystemInformation来获取系统进程信息的工具时,无法看到calc.exe进程。该例中还包含了一个强大的mHook工具类。工程编译后的DLL文件添加到注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows项下的AppInit_DLLs键中。此后启动任何使用了User32.dll的程序均会加载该DLL。
注意:如果是64位系统,那么DLL文件需要编译为64位才可以正常使用。
重点代码如下:if (SystemProcessInformation == SystemInformationClass && STATUS_SUCCESS == status)
{
//
// Loop through the list of processes
//
PMY_SYSTEM_PROCESS_INFORMATION pCurrent = NULL;
PMY_SYSTEM_PROCESS_INFORMATION pNext = (PMY_SYSTEM_PROCESS_INFORMATION)SystemInformation;
do
{
pCurrent = pNext;
pNext = (PMY_SYSTEM_PROCESS_INFORMATION)((PUCHAR)pCurrent + pCurrent->NextEntryOffset);
if (!wcsncmp(pNext->ImageName.Buffer, L"calc.exe", pNext->ImageName.Length))
{
if (0 == pNext->NextEntryOffset)
{
pCurrent->NextEntryOffset = 0;
}
else
{
pCurrent->NextEntryOffset += pNext->NextEntryOffset;
}
pNext = pCurrent;
}
}
while(pCurrent->NextEntryOffset != 0);
}
效果图:
http://www.nmgwddj.com/wp-content/uploads/2014/10/2014-10-30_135452-266x300.png
http://www.nmgwddj.com/wp-content/uploads/2014/10/2014-10-30_135503-277x300.png
点击下载:AppInitHook
转自邓佳的博客。
页:
[1]