dll高级技术--动态注入:ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称---DLL程序
dll高级技术–动态注入:ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—DLL程序
WINDOWS中DLL注入的高级技术。
dll高级技术–动态注入:ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—DLL程序
文章目录
- dll高级技术--动态注入:ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称---DLL程序
- ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称---DLL程序
ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—DLL程序
/*------------------------------------------------------------------------22-ImgWalk.cppImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称---DLL程序-----------------------------------------------------------------------*/
#include "CmnHdr.h"
#include <tchar.h>BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID fImpload)
{if (fdwReason == DLL_PROCESS_ATTACH){char szBuf[MAX_PATH * 100] = {0};PBYTE pb = NULL;MEMORY_BASIC_INFORMATION mbi;//检索有关调用进程的虚拟地址空间中一系列页面的信息while (VirtualQuery(pb,&mbi,sizeof(mbi)) == sizeof(mbi)){int nLen;char szModName[MAX_PATH];if (mbi.State == MEM_FREE)mbi.AllocationBase = mbi.BaseAddress;if ((mbi.AllocationBase == hInstDll) || //该区域包含该DLL,则隐藏掉该DLL,不显示在后面对话框中(mbi.AllocationBase != mbi.BaseAddress || //块不是区域的开始地址(mbi.AllocationBase == NULL))) { //区域地址为NULLnLen = 0;}else{nLen = GetModuleFileNameA((HINSTANCE)mbi.AllocationBase,szModName,_countof(szModName));}if (nLen > 0){wsprintfA(strchr(szBuf,0),//找到第一个0"\n%p-%s",mbi.AllocationBase,szModName);}pb += mbi.RegionSize;}//注意:正常情况下,不应该在DllMain里显示一个对话框,因为//装载器被锁。但为了程序简单化,这里违返了这个规则chMB(&szBuf[1]); //从1开始,因为 "\n%p-%s",表示szBuf[0]为换行符}return TRUE;
}