首页
社区
课程
招聘
[讨论]OD 反调试 讨论?这是什么原理?[已解决]
发表于: 2009-4-21 00:17 9475

[讨论]OD 反调试 讨论?这是什么原理?[已解决]

2009-4-21 00:17
9475
谢谢各位朋友的帮助,该问题已解决!

无壳程序,用OD加载后,目标程序部分功能不能用
(一般发现自己被调试有个提示什么的,这个无提示,只是直接在功能上做限):

A.   OD加载后(不设置任何断点), 直接F9                        \程序的部分功能用不了
B    Dede加载后(不做任何动作),  运行程序                      \程序的部分功能用不了
C.   OD加载后(把目标程序别名另存),                             \程序的部分功能用不了

D.   关闭OD后和Dede;或者不加载目标程序 再运行程序     \程序一切正常!

请问这种是这么原理?程序是怎么做到的?

刚才又做了个新测试:
-----------------
假定目标程序的整个文件夹为:文件A              (指的是整个程序目录)

1.当用OD,或者Dede加载 “文件A/目标程序”                    /运行 “文件A/目标程序”,         程序部分功能用不了         
2.再把"文件A" ,复制一份到   “文件B”      
3.运行 “文件B/目标程序”                                              /运行 “文件B/目标程序”,        程序功能全部正常

问题补充:
用“CryptoSearcher 0.97" 查看主程序,发现其中采用了 CRC32运算。

请问:  
如果主程序对其调用的DLL文件做了CRC32验证,
它是验证的DLL原文件、还是验证的载入到内存的数据?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (27)
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
啥程序?
2009-4-21 09:08
0
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
用插件隐藏调试器,再试一下。
2009-4-21 09:33
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢看学老师的关注
用插件隐藏调试器也是一样                                  \部份功用不了。

不论是OD,还是Dede一加载后,即使什么也不做,别名再开目标程序,也是一样的
2009-4-21 10:22
0
雪    币: 252
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
看看有没有调用IsDebuggerPresent?
2009-4-21 11:53
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
bp IsDebuggerPresent   断不下来
2009-4-21 23:54
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
如果没有调用IsDebuggerPresent当然是断不下来的
2009-4-22 09:45
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请问:
那它是怎么知道我的OD有没有加载它?
反正一加载,部分功能就用不了.不加载一切正常!
2009-4-22 22:10
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最新进度,找到了CRC32的验证地方了。
2009-4-23 09:16
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
10
提供一个思路:如果“部分功能不可用”是把部分菜单或按钮禁用了的话,试试EnableWindow、EnableMenuItem能不能断下。
2009-4-23 14:13
0
雪    币: 270
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
感觉是程序刚启动时候某些功能是禁止的,自身做一些判断才会启动那部分功能。像书呆彭说的那样在EnableWindow、EnableMenuItem下断点试试。
2009-4-23 15:15
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不是功能菜单被禁用,是有个代码编写的功能不能用。
一旦用OD加载后(什么也不做)   无提升,有个功能不能用
不用调试工具加载,分析             功能一切正常
2009-4-23 15:40
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
你先开程序运行,使他全正常可以用,然后在开CE,Attach程序,看看这样是不是程序又变的一部分功能就不能用了.确定下是不是被Attach后导致的功能不能用
2009-4-23 15:55
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
程序开启后,功能完全正常后, 用OD附加。。。
功能继续正常使用,。。。
2009-4-23 15:58
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
那就说明不是被附加以后导致的.
就是用OD直接打开才会导致部分功能不能用?
2009-4-24 00:09
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
又,刚才用 API Spy 2.5 加载该程序,查看函数

发现加载后,该程序功能也不成使用
2009-4-24 00:46
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
是的.

我用英文原版也试验过,也能附加

当用OD加载后不 F9
再到程序目录   运行程序,这时候该程序部分功能又不能用了!只有关闭调试程序功能才能正常使用
2009-4-24 00:59
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Attach的时候应该是程序已经过了判断那段代码,而程序估计是在启动的时候才做判断,运行中不再做任何判断了
2009-4-24 09:30
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
也许是程序中采用了anti-debug的技巧吧。
2009-4-24 09:46
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
20
这样看来它应该是检测是否存在调试器进程,而不是检测自己是否被调试。

在遍历系统进程的API下断点,如EnumProcesses(),CreateToolhelpSnap(),Process32First(),Process32Next()等,看看有没有新发现。
2009-4-24 13:42
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
21
记错了,准确的API名是CreateToolhelp32Snapshot()
2009-4-24 13:44
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
感谢书大哥指点!
刚才我试了,用 bp CreateToolhelp32Snapshot    断不下来
2009-4-24 14:41
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
如果是如何突破?   有什么好的建议嘛?请赐教!!!
2009-4-24 17:47
0
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
先反汇编不行吗?
2009-4-24 19:13
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
直接把你的东西传出来吧,看你说也说不清楚了...

都不知道到底是哪出问题
2009-4-24 19:20
0
游客
登录 | 注册 方可回帖
返回
//