首页
社区
课程
招聘
[原创][原创]调戏:纯应用层的Anti本地调试器(2)
发表于: 2013-11-25 01:35 21903

[原创][原创]调戏:纯应用层的Anti本地调试器(2)

2013-11-25 01:35
21903
本文是一个开胃用的(最近论坛不少抛砖的,就是玉石不出啊)。核心内容是怎么搞死SOD的Anti Anti Attach功能。

上一篇Anti中调戏了OD的附加和硬件断点,但是对于SOD而言,反附加还是太苍白,于是突然想起多年前,曾经被大神们使用的一个技巧,于是特来调戏一番SOD。当SOD中开启神秘功能 Anti Anti Attach时,OD附加后暂停的EIP代码中,如果用OD单步 F7会看到如下的一段代码:



这里不难看到一个native级的api,作为一个常年混迹于黑暗世界的调戏师立刻就心生歹意。
如果在这Native API上做个文章,比如取出其返回地址进行一番计较,会不会十分精彩呢。

#include "stdafx.h"
#include <winternl.h>
#include "inlinehook.h"

DWORD GetModuleImageSize(PVOID lphModule);
typedef void (__stdcall *_RtlExitUserThread)(NTSTATUS ExitStatus);

_RtlExitUserThread OldRtlExitUserThread = NULL;
DWORD ntdllBase = 0;
DWORD ntdllSize = 0;
void __stdcall OnRtlExitUserThread(NTSTATUS ExitStatus)
{
	void* __ebp = &__ebp + 2;
	DWORD Eip = *(DWORD *)((DWORD)__ebp+4);
	if (Eip>ntdllBase&&Eip<ntdllBase+ntdllSize)
	{
		OldRtlExitUserThread(ExitStatus);
	}
	else
	{
		TerminateProcess(GetCurrentProcess(),0);
	}
	return ;
}

DWORD WINAPI AAAAThread(LPVOID lparam)
{
	BYTE g_backcode[10]={0};
	ntdllBase = (DWORD)GetModuleHandle(TEXT("ntdll.dll"));
	ntdllSize = GetModuleImageSize((PVOID)ntdllBase);
	PVOID pfnRtlExitUserThread = (PVOID)GetProcAddress(GetModuleHandle(TEXT("ntdll.dll")),"RtlExitUserThread");
	InlineHook((void *)pfnRtlExitUserThread,(void *)OnRtlExitUserThread,(void **)&OldRtlExitUserThread);
	RtlCopyMemory((void *)g_backcode,pfnRtlExitUserThread,10);
	while(1)
	{
		if (memcmp(pfnRtlExitUserThread,g_backcode,10)!=0)
		{
			TerminateProcess(GetCurrentProcess(),0);
		}
		//!!
		Sleep(5000);
	}
	return 0;
}
void InitAAAA()
{
	::CreateThread(NULL,0,AAAAThread,NULL,0,NULL);
}


编译运行,用OD(SOD全开模式!)附加后,正常,按F9直接退出。显示如图:


开胃菜到这里结束了。
主菜请等下一篇。

PS:
IGS游戏安全技术培训
QQ群:48715131
欢迎有兴趣研究各类游戏安全相关技术的人员加入。

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

上传的附件:
收藏
免费 5
支持
分享
最新回复 (23)
雪    币: 75
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我第一,沙发
2013-11-25 01:42
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
继续来占座围观
2013-11-25 02:40
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
开开胃,吃早饭!
2013-11-25 09:00
0
雪    币: 218
活跃值: (223)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
返回地址检测大法
2013-11-25 09:45
0
雪    币: 149
活跃值: (2618)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大清早的吃多了消化不良
2013-11-25 09:48
0
雪    币: 259
活跃值: (279)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
泉哥注意身体啊..这么晚还操劳....辛苦了哈
2013-11-25 11:04
0
雪    币: 27
活跃值: (90)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
8
哈哈,出第2集了..
2013-11-26 13:40
0
雪    币: 341
活跃值: (133)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
9
排排坐分果果
2013-11-27 09:08
0
雪    币: 3480
活跃值: (246)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
前排围观V校。
2013-11-27 10:09
0
雪    币: 882
活跃值: (350)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
mark先,有空研究
2013-11-27 10:48
0
雪    币: 35
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
开胃开胃
2013-11-27 19:04
0
雪    币: 7752
活跃值: (2144)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
调试的刚刚好。
2013-11-28 10:46
0
雪    币: 167
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
今天是感恩节
2013-11-28 20:25
0
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
very goods
2013-12-2 21:44
0
雪    币: 35
活跃值: (139)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
16
学习了,可以发出源码吗?
2013-12-3 10:20
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
终于转正了,支持一下。
2013-12-4 00:09
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
18
2013-12-4 00:17
0
雪    币: 35
活跃值: (139)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
19
张姿势了,,,
2013-12-4 13:29
0
雪    币: 144
活跃值: (335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
这是不是检测RtlExitUserThread的返回地址看看是否在ntdll模块内?
全开sod难道不是吗?。。
为什么我的sod全开之后没效果
2014-10-15 17:22
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
21
学习了哈
2014-12-24 16:23
0
雪    币: 44
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
老V又发贴了来占个位先
2014-12-24 20:05
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我曾经用这个技术,用在DNF外挂上,用了一个常量存储,另外还开了一个线程做hook点校验,如果有代码走过,立即还原字节,过几分钟来一个无形的关闭游戏!!!!呵呵
2015-1-24 02:57
0
雪    币: 230
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好些年都没来了 ,熟悉下 呵呵呵
2015-1-24 19:22
0
游客
登录 | 注册 方可回帖
返回
//