首页
社区
课程
招聘
[原创]不被OD分析原因之一和修补方法
发表于: 2005-10-14 13:33 30684

[原创]不被OD分析原因之一和修补方法

2005-10-14 13:33
30684

作者:oHuangKeo

    有误之处,忘谅之.学习中...

    今在论坛里看到有人发贴说有程序不让OD分析.这很常见了,很多脱壳后的文件,弄得不好还就是不能用OD打开分析.但这种情况是程序一般也是不能运行的.现在的问题就是,程序可以正常运行,可是OD不能打开分析,说"Bad or unknown format of 32-bit executeable file '**.exe'".这句话说这个程序不是有效的32位可执行程序.明明可以运行的嘛.
    下面来给大家做个试验再说明原因.

    1.用十六进制工具打开NotePad,(别的EXE文件也行.)选中从'PE'开始的大小为0xE0的数据,复制,然后到文件地址为0x40处粘贴.(大家都知道,这里是DOS头的区域,除非在DOS下运行程序才会用到这一段数据.)
    2.把后面多余的数据用'0'填上[0x120-0x1BF]. 然后就是修正了.因为PE头位置定位到了0x40,所以得把0x3C处改为0x40.这个大家都是知道的.
    3.最后就是关键问题所在了. 把0x54地址的数据改为'8001',就是0x180.
    好,现在保存,运行程序看,OK,可以运行,没有问题.用OD再打开试试?哈哈,报错啦.

    下面说说原因,有说得不好的地方,大家不要笑话偶.
    OD在加载程序时,会先对程序进行分析.OD的作者写此程序就只是针对Win32下的PE文件(好像作者现在在开发2.0版本的,是分析64位程序的.)所以有比较SizeOfOptionalHandler,而在PE定义中,这个值是0xE0,是一个定值.OD比较这个值,如果是0xE0就对了,不等就是错误的EXE文件.
    我们刚才做的就是改变PE Handler的大小,后面多余的数据填'0'也是有意义的.这就是系统可以正常运行的原因.后面多余的'0'归属于DataDirectory中了.系统在加载时只加载16组数据,后面的顶多算为是PE结构的保留数据,好像在前16组中,也是有保留数据的.所以不会出错.
    附件中有我修改PE文件的录相,可以下载参考一下.

    修复这一BUG方法,把0045C671处的je改为jge,就是大于等于就可以了.

    通过小小修改PE就可以不让OD加载,但这也都是些小花样.OD的BUG是可以补的嘛.一定还会有更多的BUG,有待大家的发现.

附件:od_bug.rar


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

收藏
免费 7
支持
分享
最新回复 (32)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
2005-10-14 13:53
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嘿嘿嘿,很好!
2005-10-14 14:36
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
打开OD的log可以发现原因:

文件页眉中的可选文件头大小非法 (240. instead of 224. bytes)

这一点看来是作者的失误了,因为可选文件头大小比E0大的话在任何平台都可以正常运行的。
2005-10-14 14:43
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
5
到作者主页上反馈一下吧~ 呵呵~
2005-10-14 15:55
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
我用的传美版QQ,用od也没法跟踪,也不报错,就是点运行的时候,没反应,不知楼主能否提供点思路啊?
2005-10-14 16:40
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
7
这个我就没研究过了,原因很多的.呵呵.问问高人吧.
2005-10-14 16:45
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
8
刚刚玩了一下
学习了
2005-10-14 17:42
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
最初由 wave 发布
我用的传美版QQ,用od也没法跟踪,也不报错,就是点运行的时候,没反应,不知楼主能否提供点思路啊?


做到这点似乎更容易,查进程列表,查进程特征数据,象内存杀毒一样,发现时立即退出.
2005-10-14 18:13
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
10
加精吧,虽然文章不长,但是很精。
再简单说一下“3.最后就是关键问题所在了. 把0x54地址的数据改为'8001',就是0x180.”就好了,其实是pe头的一些问题,可以正好给大家讲讲,加深记忆!
2005-10-15 11:34
0
雪    币: 108
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢 学习了
2005-10-15 12:13
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
最初由 dwing 发布


做到这点似乎更容易,查进程列表,查进程特征数据,象内存杀毒一样,发现时立即退出.


难道是外挂作者怕别人用od跟踪,这说不过去吧?
2005-10-15 16:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了!试用一下!
2005-10-15 23:14
0
雪    币: 136
活跃值: (135)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
14
最初由 wave 发布


难道是外挂作者怕别人用od跟踪,这说不过去吧?
也许吧,现在的 很多作者为防御od调试,什么点子都能用到!!!!!!!!
2005-10-16 13:40
0
雪    币: 136
活跃值: (429)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
顶一下,学习了
2005-10-16 16:49
0
雪    币: 267
活跃值: (235)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
16
不错,够精练!!
2005-10-17 11:04
0
雪    币: 212
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
错楼主的位置说句话,如果OD能载入,但是按下F9程序不能运行起来,通常是什么原因呢?
为这事我郁闷好久了
2005-10-17 12:52
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
18
是程序里有检查OD的吧.你说的不能运行是出现的什么问题呢?这种情况很我多的.可以说来听听.
2005-10-17 13:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
usa
19
最初由 ngaut 发布
不错,够精练!!
2005-10-17 14:30
0
雪    币: 221
活跃值: (161)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
20
楼主,你好!你的文章很好,让我增长了知识开了眼界,非常感谢。

我试着用你说明的方法去修改notepad,但总是不成功。我发现我的notepad和你的有些差别,在录像中是你的记事本的PE是从E0开始到1BF。而我的系统是XP,记事本是英文版的,PE开始的地方是从E8开始的。我试过好多种方案都不成功,比如平移8个字节(因为和录像上相差8个字节),或者完全照你的录像做,都不行。请指点。

还有,我曾经碰到过一个软件kanjiweb3.0,用OD打开后,提示无效PE,然后是一片空白,好像照你说的方法改过记事本后,在OD中仍然能看到东西。关于这个问题我曾经在这里发过贴子问,但没人回答。请指点。
2005-10-17 19:33
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
21
把你的英文版的Notepad.exe打个包贴上来看看吧.
2005-10-17 20:08
0
雪    币: 221
活跃值: (161)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
22
谢谢你!可是我现在没有上传附件的权限啊。
2005-10-18 00:42
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
23
ohuangkeo@hotmail.com.发给我吧.
2005-10-18 00:54
0
雪    币: 221
活跃值: (161)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
谢谢你!我已经发给你了。
2005-10-18 10:45
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
25
今天看到这个老贴了,顺便说下吧。如果程序入口部分不在code段也是不能被分析得。许多程序脱壳后不能被分析差不多就是这个原因吧
2006-2-18 20:02
0
游客
登录 | 注册 方可回帖
返回
//