首页
社区
课程
招聘
IAT Hook相关问题
发表于: 2013-3-13 17:32 3998

IAT Hook相关问题

2013-3-13 17:32
3998
(课程作业需要对堆溢出进行检测,所以需要hook内存申请函数。采用DLL注入,然后用修改IAT来hook函数。)

DLL里面的主要函数如下:

变量:
typedef void* (*pfnmalloc)(size_t);
void *mymalloc(size_t size);

int *addr = (int *)malloc;
int *myaddr = (int *)mymalloc;


其中dll里面的IAT修改函数如下(摘自网上):
void ThreadProc(void *param)
{
	//------------hook api----------------
	hMod = GetModuleHandle(NULL);

	pDosHeader = (PIMAGE_DOS_HEADER)hMod;
	pNTHeaders = (PIMAGE_NT_HEADERS)((BYTE *)hMod + pDosHeader->e_lfanew);
	pOptHeader = (PIMAGE_OPTIONAL_HEADER)&(pNTHeaders->OptionalHeader);

	pImportDescriptor = (PIMAGE_IMPORT_DESCRIPTOR)((BYTE *)hMod + pOptHeader->DataDirectory[1].VirtualAddress);

	while(pImportDescriptor->FirstThunk)
	{
		char * dllname = (char *)((BYTE *)hMod + pImportDescriptor->Name);

		pThunkData = (PIMAGE_THUNK_DATA)((BYTE *)hMod + pImportDescriptor->OriginalFirstThunk);

		int no = 1;
		while(pThunkData->u1.Function)
		{
			char * funname = (char *)((BYTE *)hMod + (DWORD)pThunkData->u1.AddressOfData + 2);
			PDWORD lpAddr = (DWORD *)((BYTE *)hMod + (DWORD)pImportDescriptor->FirstThunk) +(no-1);

			//修改内存的部分
			if((*lpAddr) == (int)addr)
			{
				//修改内存页的属性
				DWORD dwOLD;
				MEMORY_BASIC_INFORMATION  mbi;
				VirtualQuery(lpAddr,&mbi,sizeof(mbi));
				VirtualProtect(lpAddr,sizeof(DWORD),PAGE_READWRITE,&dwOLD);

				WriteProcessMemory(GetCurrentProcess(), 
					lpAddr, &myaddr, sizeof(DWORD), NULL);
				//恢复内存页的属性
				VirtualProtect(lpAddr,sizeof(DWORD),dwOLD,0);
			}
			//---------
			no++;
			pThunkData++;
		}

		pImportDescriptor++;
	}
	//-------------------HOOK END-----------------
}


直接hook malloc还有free函数都没有问题,而new函数,内部调用了malloc吧?所以觉得直接hook malloc应该就可以了,但是没有反应。
求前辈们指教,为什么dll里面拦截了malloc(加了个messagebox),目标进程调用了new却没反应(没有messagebox弹窗)?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
hook ntdll.RtlAllocateHeap
2013-3-13 18:19
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我觉得一般自用还是hot patch最简单也最稳定
2013-3-14 06:45
0
游客
登录 | 注册 方可回帖
返回
//