dll高级技术--动态注入:ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称---DLL程序

dll高级技术–动态注入:ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—DLL程序

WINDOWS中DLL注入的高级技术。
dll高级技术–动态注入:ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—DLL程序


ImgWalk动态库,这个DLL用来检测被注入的进程中当前载入的各个模块名称—DLL程序

/*------------------------------------------------------------------------
 22-ImgWalk.cpp
	 
	ImgWalk动态库,这个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))) {     //区域地址为NULL
			
				nLen = 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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值