首页
社区
课程
招聘
[原创]Timetrap 函数陷阱,让你有进无回
发表于: 2012-8-25 16:22 8244

[原创]Timetrap 函数陷阱,让你有进无回

2012-8-25 16:22
8244
作为砖业的叛逆程序员,我们在分析一个软件时,分析函数是必要的过程.
那有木有办法抵抗,让别人无法分析函数呢?
然而小弟今日突发奇想,只见天空一声巨响,我就闪亮登场,本文章就这样诞生了.

进入正题,这是我
在逆向一些东东时借鉴到的东西,其实这个东西在socket应用上很普遍了.
只是我拿来Anti 调试器的   仓促之下 写的文章 未过多想 雕虫小技,请各位大人莫要见怪.

void Timetrap()
{
	//VMBEGIN
	DWORD nTime = 0;
	_asm //GetTickCount
	{
		mov edx,0x7FFE0000
		mov eax,dword ptr ds:[edx]
		mul dword ptr ds:[edx+4]
		shrd eax,edx,0x18
		mov nTime,eax
	}
	
HA:
	printf("Hello World!\n");

	_asm //GetTickCount
	{
		mov edx,0x7FFE0000
		mov eax,dword ptr ds:[edx]
		mul dword ptr ds:[edx+4]
		shrd eax,edx,0x18
		sub eax,nTime
		cmp eax,1000
		jg  HA
	}

	// 重要的一些操作.

	_asm //GetTickCount
	{
		mov edx,0x7FFE0000
		mov eax,dword ptr ds:[edx]
		mul dword ptr ds:[edx+4]
		shrd eax,edx,0x18
		sub eax,nTime
		cmp eax,1000
		jg  Byebye
	}
	return;
Byebye:
	ExitProcess(-1);
	//VMEND
}

int main(int argc, char* argv[])
{
	Timetrap();
	getch();
	return 0;
}



类似于 Class Private Code,不光是在函数上,在任何隐秘的地方,你都可以隐藏一个陷阱.
这里重要的是对时间的把握,如果函数的时间复杂度神马的超过就会出现死循环.
下面是附件,请各位大人下载 用Visual C++ 6.0 编译之后, 按F7编译,按F5调试,
单步进入 Timetrap函数之后 猛按F10把!

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (15)
雪    币: 142
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
自己顶一下,对了,不要跟我提 F4 ,他们过时了.VM 你们懂的~
2012-8-25 16:31
0
雪    币: 64
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习一下~~
2012-8-25 16:38
0
雪    币: 316
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
顶下,这样小小的Anti,随便写个驱动就给PASS了.
2012-8-25 16:39
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
5
我已经写过了,其实这个可以通过XXOO
http://bbs.pediy.com/showthread.php?t=154925
2012-8-25 19:23
0
雪    币: 142
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
你那个太深奥了,我是给菜鸟看的.. 等以后我打算写壳的时候用上,所以就记录一下 嘿嘿
2012-8-25 21:10
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
7
写壳用RDSTC就行了吧~
不用那么长的一坨代码
2012-8-25 21:18
0
雪    币: 220
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
兼容性和稳定性怎么样?
2012-8-25 21:37
0
雪    币: 1905
活跃值: (1537)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9


RDSTC 貌似有误差,多心脏的情况下。
2012-8-26 03:28
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
没感觉啊~~~~
2012-8-26 19:16
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
标记一下吧。。。。。。。。
2012-8-26 19:55
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
这种东西 要是机器刚好卡了下 不是被人ANTI了
2012-8-26 21:47
0
雪    币: 119
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
过来表示支持
2012-8-27 00:54
0
雪    币: 142
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
14
就算你电脑死机了,这段代码也不会出错,除非你装的是古代的 DOS机
2012-8-27 09:04
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
仍段rd
__asm            
{
  RDTSC
  mov HighStart, edx
  mov LowStart, eax
}
for(int i= 0; i<100000; i++ )
{
             for(int i= 0; i<100000; i++ )
      {
      
      }
}
2012-8-28 12:02
0
雪    币: 316
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
16
引用一下deroko/ARTeam的驱动代码.
上传的附件:
2012-8-28 12:16
0
游客
登录 | 注册 方可回帖
返回
//