首页
社区
课程
招聘
[原创][反应用层反外挂]禁用你的DLL_THREAD_ATTACH
发表于: 2013-6-29 19:49 13649

[原创][反应用层反外挂]禁用你的DLL_THREAD_ATTACH

2013-6-29 19:49
13649
《win核心编程》里介绍DLL_THREAD_ATTACH的时候说过一个函数
BOOL DisableThreadLibraryCalls(
  HMODULE hModule  // handle to DLL module
);
他可以禁用某个模块的DLL_THREAD_ATTACH,但是它只能在本进程操作。
稍微跟了下,其实就是修改PEB->DllList->Flags,或了两个值0x40000、0x80000。

下面是一个测试工程。
我觉得应用层,不管你怎么反,只要能OpenProcess、Read、Write,总是可以揪到你的小丁丁的

BOOL MyDisableThreadLibraryCalls(HMODULE hMod)
{
	PEB* pPEB=NULL;
	PEB_LDR_DATA* pDllList=NULL;
	LIST_ENTRY* pFlink=NULL;
	LIST_ENTRY* pIndex=NULL;
	LDR_DATA_TABLE_ENTRY* pEntry=NULL;
	
	__asm
	{
		mov eax,fs:[0x30]
		mov pPEB,eax
	}
	pDllList=pPEB->DllList;

	//InLoadOrderLinks
	pFlink=&pDllList->InLoadOrderLinks;
	pIndex=pFlink->Flink;
	pEntry=NULL;
	while(pIndex!=pFlink)
	{
		pEntry=CONTAINING_RECORD(pIndex,LDR_DATA_TABLE_ENTRY,InLoadOrderLinks);
		if(hMod==pEntry->DllBase)
		{
			pEntry->Flags|=0x40000;
			pEntry->Flags|=0x80000;
		}
		pIndex=pEntry->InLoadOrderLinks.Flink;
	}

	//InMemoryOrderModuleList
	pFlink=&pDllList->InMemoryOrderModuleList;
	pIndex=pFlink->Flink;
	pEntry=NULL;
	while(pIndex!=pFlink)
	{
		pEntry=CONTAINING_RECORD(pIndex,LDR_DATA_TABLE_ENTRY,InMemoryOrderModuleList);
		if(hMod==pEntry->DllBase)
		{
			pEntry->Flags|=0x40000;
			pEntry->Flags|=0x80000;
		}
		pIndex=pEntry->InMemoryOrderModuleList.Flink;
	}

	//InInitializationOrderModuleList
	pFlink=&pDllList->InInitializationOrderModuleList;
	pIndex=pFlink->Flink;
	pEntry=NULL;
	while(pIndex!=pFlink)
	{
		pEntry=CONTAINING_RECORD(pIndex,LDR_DATA_TABLE_ENTRY,InInitializationOrderModuleList);
		if(hMod==pEntry->DllBase)
		{
			pEntry->Flags|=0x40000;
			pEntry->Flags|=0x80000;
		}
		pIndex=pEntry->InInitializationOrderModuleList.Flink;
	}

	return TRUE;
}


DllTest.rar

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 5
支持
分享
最新回复 (9)
雪    币: 284
活跃值: (3389)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
2
亮点是小丁丁~
2013-6-29 20:01
0
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有攻有防,很不错的说.~~ 支持
2013-6-29 20:59
0
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错,记录下。
2013-6-29 21:18
0
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
小丁丁勃起了又被搞萎了
2013-6-29 21:27
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
路过来围观一下。。。
2013-6-29 23:17
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
7
好复杂,在能用DLL_ATTACH_THREAD检测的系统的世界里,直接使用ZwCreateThreadEx配上一个flag就好了~
windows自动为你不经过DLLMain了。还有很多flag哦哦~~
2013-6-30 08:41
0
雪    币: 148
活跃值: (59)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
原来v大还留了手
做个链接
《线程API:ZwCreateThreadEx的一些特殊用法》
http://bbs.pediy.com/showthread.php?t=174534
2013-6-30 11:37
0
雪    币: 8
活跃值: (28)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
mk 一下回头用得着的时候就cy下
2013-8-7 21:46
0
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
mark
2014-3-6 18:56
0
游客
登录 | 注册 方可回帖
返回
//