首页
社区
课程
招聘
[原创]你用 OllyDbg 吗? 千万不要相信他也不要相信你的眼睛!
发表于: 2008-7-28 04:45 37589

[原创]你用 OllyDbg 吗? 千万不要相信他也不要相信你的眼睛!

2008-7-28 04:45
37589
收藏
免费 7
支持
分享
最新回复 (57)
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
写的好乱啊,是不是利用下了断点产生CC,然后没有取消断点,然后去读了计算??
2008-8-20 10:40
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
27
连你都说乱, 那就肯定是乱了 
看呒的跳过. 讲到硬断的跳过
不要再顶出来了
2008-8-20 11:14
0
雪    币: 214
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
希望全世界比我高的人全挂了  哈哈哈 开玩笑的全挂了 我去哪学去.
2008-8-20 21:00
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
楼主给他写个出来`````````
2008-8-24 01:42
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
30
这样子多没个性
变水帖了
2008-8-24 02:00
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
,恩,氛围不错,有动力啊,知识无止境啊
2008-8-24 17:05
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
努力学习中,谢谢
2008-8-25 08:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
道行不够,不是很懂
2008-9-15 13:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
我想破一个软件的注册码,可是根本不会用OllyDbg ,有谁告诉我该怎么办吗?真的是菜鸟一个哦,希望能有高手的指点!
2008-9-25 22:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
学习一下啊。。。。
2008-11-21 23:12
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
36
确实有标题party嫌疑
2008-11-22 01:47
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
我也遇见过这样的情形,就是在OD能够看到代码的第一行,按鼠标滚动浏览原来的代码就会发生改变,一直没有弄清,可能与这个类似吧?
2008-11-24 18:08
0
雪    币: 356
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
有一种东西,叫做花指令
2008-11-27 17:08
0
雪    币: 147
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
39
我最害怕hying,因为我常用内存断点和硬件断点,INT 3的少用
2009-4-4 09:54
0
雪    币: 314
活跃值: (10)
能力值: ( LV12,RANK:570 )
在线值:
发帖
回帖
粉丝
40
讨论激烈啊,学习了。百家争鸣,才是创造知识的时代啊。
2009-4-4 13:52
0
雪    币: 148
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
OllyDbg中的OpCode的Hex显示有时也是错误的.大家别太迷信.
2009-4-4 13:55
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
跟跟大数计算器BigInt Calculator pro 代码在OD中变换.执行是正常的.
很多push指令变成了push es 等等.
2009-4-4 20:36
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
LZ标题是否托大了,OD能解决99.9%问题话,谁不能容忍0.1%的错误?
2009-4-8 22:53
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
44
个人认为这并不是一个错误,而是只能这样处理,原因如下:
1、软断要怎么实现?让程序崩掉,再捕获异常。让程序崩掉的方法很多,不过一个字节就能搞崩的,估计也就int3能搞搞,所以代码改写为int3无可厚非。但是改写后,不能让调试者发现代码变了,所以它需要特意记录下原先的数值用于显示,而且也要用于代码还原。
2、程序修改自身代码,OD很难获知。在改写自身代码之前,一般都会有VirtualProtect修改区段属性,所以给区段加“不可写”属性,再捕获写入异常也不一定能解决问题。
而改写自身代码后,OD之前写入的int3必定会被覆盖,但是OD之前又特意记录下了原先的数值,所以显示的时候,还是会显示出原来的E8,这样就会导致“乱码”,但是由于内存中实际已经被改写,所以执行的与我们看到的不同。
3、禁用或者删除断点,会还原代码,也就是还原之前记录下的数值,所以执行的就与我们看到的相同。
4、启用断点,这个不用多说了,大家都知道。

个人认为,这基本上没有根治的方法,这相当于你用特殊的方法,把断点加在了本不应该加的地方(指令的非首字节),那断点工作异常也是可以理解的。
OD最多也就可以判断一下断点的实际位置的值到底是不是CC,如果是的话,显示原数值,否则自动禁用断点,不过如果这段代码被改写后,断点位置的实际值刚好也是CC,那就无能为力了。可能也正是因为不能保证解决问题,所以才根本就没有做这被认为“多余”的处理。

不过之前学脱SecuRom壳时,发现它的反调试很厉害,软断不起作用也就算了,硬断也不起作用,而且是直接无视掉但是可以正常运行,不会出错。这可不是加错断点了,我在GetVersion头部下断,断不下来,但是改写头部代码,jmp至空地,OutputDebugString输出,再jmp回去,改好后F9,调试信息乖乖出来了。至今没脱成功,也不知道原理是什么……
2009-4-8 23:59
0
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
“中国牛人SYSTEMDEBUG例外”,我很想知道SYSTEMDEBUG是谁,为什么google不到啊?下次见着了也好膜拜下。
2009-5-17 22:28
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
46
好帖子,这是经验之谈呀
2009-5-20 09:03
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
         ÿ
2009-5-20 16:01
0
雪    币: 97697
活跃值: (200759)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
48
2009-5-20 16:32
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
不多说。单纯的学习!
2010-1-21 16:58
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
还在学习阶段,只能慢慢学了
2010-1-25 23:38
0
游客
登录 | 注册 方可回帖
返回
//