首页
社区
课程
招聘
[旧帖] [讨论]这部分代码为什么OD无法正确反汇编? 0.00雪花
发表于: 2008-3-10 17:28 4122

[旧帖] [讨论]这部分代码为什么OD无法正确反汇编? 0.00雪花

2008-3-10 17:28
4122
这一段代码为什么OD无法正确反汇编?

[FONT="宋体"]0040129D   .  2BC9          SUB ECX,ECX
0040129F   .  85C9          TEST ECX,ECX
004012A1   .  75 13         JNZ SHORT riijjcra.004012B6
004012A3   .  85C9          TEST ECX,ECX
004012A5   .  75 08         JNZ SHORT riijjcra.004012AF
004012A7   .  6A 00         PUSH 0
004012A9   .  6A 00         PUSH 0
004012AB   .  6A 00         PUSH 0
[COLOR="Blue"]004012AD      68            DB 68                                                  ;  CHAR 'h'
004012AE   .  06            PUSH ES
004012AF   .  0001          ADD BYTE PTR DS:[ECX],AL
004012B1   .  40            INC EAX
004012B2      FF            DB FF
004012B3      15            DB 15
004012B4   .  04 A0         ADD AL,0A0
004012B6   .  40            INC EAX
004012B7   .  00E8          ADD AL,CH
004012B9   .  13FF          ADC EDI,EDI
004012BB   ?  FFFF          ???                                                    ;  未知命令
004012B6   .  40            INC EAX
004012B7   .  00E8          ADD AL,CH
004012B9   .  13FF          ADC EDI,EDI
004012BB   ?  FFFF          ???                                      ;  未知命令[/COLOR]004012BD   .  EB 09         JMP SHORT riijjcra.004012C8


IDA就可以正确分析,如下:

.text:0040129D                 sub     ecx, ecx
.text:0040129F                 test    ecx, ecx
.text:004012A1                 jnz     short near ptr loc_4012B2+4
.text:004012A3                 test    ecx, ecx
.text:004012A5                 jnz     short near ptr loc_4012AD+2
.text:004012A7                 push    0
.text:004012A9                 push    0
.text:004012AB                 push    0
.text:004012AD
.text:004012AD loc_4012AD:                             
.text:004012AD                 push    40010006h
.text:004012B2
.text:004012B2 loc_4012B2:                             
.text:004012B2                 call    ds:RaiseException
.text:004012B8                 call    sub_4011D0
.text:004012B8
.text:004012BD                 jmp     short loc_4012C8[/FONT]


这是来自 riijj 老大一个CM中的反汇编代码, 按理说这部分代码也没有像花指令那样来干扰OD,但OD为啥就不能正确反汇编呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
惭愧,明白了
2008-3-10 21:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主明白了我们还不明白撒,把原因说出来嘛
2008-3-10 21:27
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
呵呵,不好意思说,这也是一段花指令, 哎见识太少了

IDA分析中已经很清楚了:
.text:004012A1                 jnz     short near ptr loc_4012B2+4
...
.text:004012A5                 jnz     short near ptr loc_4012AD+2
...
.text:004012AD loc_4012AD:                             
.text:004012AD                 push    40010006h
.text:004012B2 loc_4012B2:                             
.text:004012B2                 call    ds:RaiseException

两个跳转指令中跳转的目的地址不是指令的开始地址,而是跳到指令码的中间去了(当然,这个跳转是绝对不可能发生的),但OD在这里没分析出来,就被搞晕了

看来,IDA的反汇编能力的确还是略高一筹
2008-3-10 21:38
0
游客
登录 | 注册 方可回帖
返回
//