首页
社区
课程
招聘
[原创]反调试测试[1006-2008.07.23]
发表于: 2008-6-16 19:36 22718

[原创]反调试测试[1006-2008.07.23]

2008-6-16 19:36
22718

学习vc,和学习反调试。写了个antidebug-test程序。秀一下。
主要是参考《脱壳的艺术》等文章,还有部分没有实现,个别的实现好象也有点问题,高手帮忙指点下。
-------------------------------------
1006版 http://bbs.pediy.com/attachment.php?attachmentid=16313&stc=1&d=1216742375
1006版,没加新东西,只修改了一个错误,和删除了两个垃圾函数。其它的反调试几乎都不知道了,如果有牛人指点些新的,我再添加。
-------------------------------------
[1006-2008.07.08]
        [!]修正FS_OD_Exception_GuardPages中的内存释放问题(sessiondiy指出);
        [-]删除FD_DebugActiveProcess()函数;
        [-]删除FT_Prefetch_queue_ret()函数;
        [!]未修改Codepart_Sum_Value数值,Codesec_CRC_value数值!

[1005-2008.06.30]
        [!]在FS_ODP_系列函数中增加不同OS_winxp的限制处理。
        [!]修改FS_ODP_ZwSetInformationThread()函数,兼容win2k;
        [!]修正FT_Prefetch_queue_nop2()函数;
        [!]修正FB_SWBP_ScanCC()函数的MessageBoxA函数取错地址问题;
        [!]调整FB_SWBP_CheckSum_Thread()函数;
        [+]增加FD_INT_2d()函数;
        [+]增加FD_Exception_Instruction_count()函数;
        [+]增加FD_INT_2d()函数;
        [+]增加FS_OD_Int3_Pushfd()函数;(gkend提示);
        [+]增加AT_Exception_StackOverFlow();
        [!]!!!!发布前修改Codepart_Sum_Value数值!
        [!]!!!!发布前修改Codesec_CRC_value数值!
[1004-2008.06.29]
        [!]修改在Win2k下GetProcessId的问题;
        [!]修改FD_CheckRemoteDebuggerPresent()问题;
        [!]修改AD_INT_2e()函数;
        [!]修正最后一页checkbox显示问题;
        [!]修正FD_DebugObject_NtQueryObject的unicode字串问题;
        [!]修正FD_Heap_Tail();
        [!]修改FD_Exception_Int1()为FS_SI_Exception_Int1();
        [-]删除FSDlg,ADDlg类和相关文件;
        [-]删除UK_UnhandledExceptionFilter()函数;
        [-]删除UK_INT_2d()函数;
        [+]增加部分FD_函数前的HideOD检测;       
        [+]增加myGetOSVersion函数,以区别不同OS;
        [+]增加FV_VME_RedPill()函数;
        [+]增加FS_ODP_CheckRemoteDebuggerPresent();
        [+]增加FS_ODP_ZwSetInformationThread();
        [+]增加AD_Escape_by_CreateProcess()函数;
        [+]增加AD_Self_Debugging()函数;
        [+]增加AD_SetWindowOnTop函数;
        [+]增加FD_check_StartupInfo()函数;
        [+]增加FD_Parent_Process1()函数,用QuerySystemInfoProcess替代Process32Next,以绕过HideOD插件;
        [+]增加FB_SWBP_CheckSum_Thread()函数;

[1003-2008.06.25]
        [!]修改部分函数bug
        [+]增加tab控件分类管理
        [+]增加部分函数

[1002-2008.06.16]
        [!]改函数分类和名称

[1001-2008.06.15]
        [+]初始版本


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (42)
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
2
正常执行,全选,发现rdtsc过不去
2008-6-16 19:59
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
3
太棒了.
若有Source Code就更棒了

Guards Pages 没free, 多按几次越配越后面
2008-6-16 20:04
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
这工具测试和学习Anti很方便。
界面再人性化一下就好,比如双击选中一组。

想起以前heXer那个Anti测试工具,也很不错。
2008-6-16 20:04
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
可能还有点问题。我研究研究。

Guards Pages 没free, 多按几次越配越后面

多谢,我去看下


好。以后改进。

===
还有很多没搞定,比如灰色的和有些有点小问题。
2008-6-16 20:30
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
6
不 错 , 呵
2008-6-16 22:04
0
雪    币: 308
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
支持下!!!!!!!!!!
2008-6-16 23:34
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
貌似有几项在windows的explorer下也过不去,包括HW_BREAK_CLR,filecheck,pushss_popss
ps:我的cooldumpper基本都能过,就那个kernel GetTickCount过不了,还有那个int2e能把调试器弄死,不知道怎么弄的。
2008-6-17 11:02
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
9
HW_BREAK_CLR,是清调试寄存器。清除成功就提示。所以explorer下也提示。
file_check也是同样,我随便填了个值校验,所以肯定也提示。
pushss_popss好像在release版本下有点问题,我再调整吧。
关于int 2e,可以与setinformationthread对比下(不要开启OD的HIDEOD的相关选项)。

多谢测试。。呵呵。
不知大家还有什么反调试的绝招没,我们共同搞个反调试完全版。
2008-6-17 11:07
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
10
很多项不调试直接跑都有问题,WIN2000
2008-6-17 12:01
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
11
找ccfer
2008-6-17 12:03
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
12

是,比较担心跨平台问题。
不过win2000我跑过啊,是指哪些项?
2008-6-17 12:05
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
13
win2000不调试也出提示:
Kernel32_OutputDebugString!
INT_2e!
kernel32_SetUnhandledExceptionFilter!
2008-6-17 12:12
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
14
是,attck-debugger部分是不调试也出提示。
因为不是检测,只是执行动作,所以如果选了该项,执行完成后,就提示了。我还不知道如何判定是否执行成功(攻击有效)。其它如HW_breakpoints_CLR也是这样。
由于最开始只是为了自己学习anti写的程序,没有从使用者角度考虑太多人性化的东东,可能不太好用。以后版本修正。多谢ccfer也帮忙测试。
2008-6-17 13:21
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
提示信息最好人性化点,比如: "检测到调试器",“没有检测到”之类,你有时弹,有时不弹,别人也弄不清楚你是检测到了还是没检测到
2008-6-17 17:01
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
16
以后版本改进。
还有其它好建议吗?
2008-6-17 22:46
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
17
给一个过这些anti的OD或OD插件
2008-6-17 23:53
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
作品快完工了嘛?预定产品先!
2008-6-18 00:15
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
19
其实看了下,很多都是针对插件的补丁策略来写的。比如BlockInput,返回值应该是等于参数值的,还有ZwSetInfomationThread也是,在设置缓冲区的指针和长度都为0的情况下,返回值应该是0,而HideOD和Prison都没有正确的补丁返回值。rdtsc貌似是数值上的问题……
2008-6-18 09:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
关注一下。。。。。
2008-6-18 11:08
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
21
太棒了,方便学习
2008-6-19 15:30
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
22
最近就在写这个学编程。上次问的问题就是这个程序里的。
多谢哈。
正在写下个版本。如果不麻烦的话,很想让你帮我看看代码都有哪些问题。
2008-6-20 00:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
学习一下,呵呵
2008-6-20 10:03
0
雪    币: 277
活跃值: (2026)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
检测也太强了吧,我没有启动OD,启动BCB都检测到RDTSC、OutputDebugString,Int_2E  等,好几个了
2008-6-22 10:44
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
25
解决了几个以前没有弄明白的问题。欢迎测试。主要在xp下测试了。
就这样了,告一段落。该忙点别的了。
上传的附件:
2008-6-29 16:16
0
游客
登录 | 注册 方可回帖
返回
//