能力值:
( LV2,RANK:10 )
|
-
-
2 楼
那个是数据吧,怎么反汇编?
|
能力值:
( LV9,RANK:370 )
|
-
-
3 楼
可以按照下面的步骤反汇编:
1、从winhex中截取mbr的代码部分0h ~ 01BD。
2、把截取的部分存成文件,要是数据文件而不是这部分的16进制的文本文件,在winhex中选定,右键,edit->save as file就可以。假如存为了mbr.dat
3、用debug反汇编:
(1)debug mbr.dat
(2)- u
(3)这里的反汇编跟pe文件不同,你必须自己分清楚哪部分是代码,哪部分是数据,比如我的mbr数据的反汇编:
1ECD:0100 EB48 JMP 014A
1ECD:0102 90 NOP
1ECD:0103 D0BC007C SAR BYTE PTR [SI+7C00],1
1ECD:0107 FB STI
1ECD:0108 50 PUSH AX
1ECD:0109 07 POP ES
1ECD:010A 50 PUSH AX
1ECD:010B 1F POP DS
1ECD:010C FC CLD
1ECD:010D BE1B7C MOV SI,7C1B
1ECD:0110 BF1B06 MOV DI,061B
1ECD:0113 50 PUSH AX
1ECD:0114 57 PUSH DI
1ECD:0115 B9E501 MOV CX,01E5
1ECD:0118 F3 REPZ
1ECD:0119 A4 MOVSB
1ECD:011A CB RETF
1ECD:011B BDBE07 MOV BP,07BE
1ECD:011E B104 MOV CL,04
那么就就必须用下面的命令:
- u 014a
重复这个步骤,一步步把代码和数据分清楚,并把所有的代码部分反汇编出来。
这里不能直接从头到尾地翻译的原因就是有些部分可能是数据,可能会破坏代码的数据结构。
不用debug用ida也行,只要能反汇编就可以,而且必须是16位的。
如果反汇编出来了,研究透了别忘了在论坛上共享啊, 好运!
|
|
|