004012D2 loc_4012D2:
; CODE XREF: sub_401280+5Fj 004012D2 movsx ecx, byte ptr [eax] 004012D5 push eax 004012D6 lea ebp, [ebp+ecx*2+0] 004012DA call edi ; CharNextA
; Return a pointer to the next character in a
; string 004012DC cmp byte ptr [eax], 0 004012DF jnz short loc_4012D2 代码结束
代码开始 (w32dasm)
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004012DF(C) | :004012D2 0FBE08 movsx ecx, byte ptr [eax] :004012D5 50 push eax :004012D6 8D6C4D00 lea ebp, dword ptr [ebp+2*ecx] :004012DA FFD7 call edi :004012DC 803800 cmp byte ptr [eax], 00 :004012DF 75F1 jne 004012D2
代码结束
你注意到它们的不同了吗?IDA将向解释每一件事情。
在IDA中另一个同w32dasm近似的是十分简单的,如:"Goto code location" 等同于在IDA"Jump - Jump to adress" . 或者 "Goto entrypoint" 等同于在IDA"Jump - Jump to entry point" .
那些就是在你了解IDA开始使用它前最为重要的东西。有时 ,IDA显示大量的"db",参考字符串,仅有代码。仅仅可以设好光标,按"c"键,IDA转换代码如下
开始 (在按'C'之前)
00401228 dd offset unk_406130 0040122C db 8Bh ; ?0040122D db 35h ; 5 0040122E dd offset RegSetValueExA 00401232 db 6Ah ; j 00401233 db 1 ; 00401234 db 6Ah ; j 00401235 db 0 ; 00401236 db 68h ; h 00401237 dd offset aName ; "Name" 0040123B db 51h ; Q 0040123C db 0FFh ; 0040123D db 0D6h ; ?0040123E
db 8Bh ; ?0040123F db 4Ch ; L 00401240 db 24h ; $ 00401241 db 8 ; 00401242 db 68h ; h 代码结束
开始 (在按'C'之前)
0040122C mov esi, ds:RegSetValueExA 00401232 ; --------------------------------------------------------- 00401232 push 1 00401234 push 0 00401236 push offset aName ; "Name" 0040123B ; ------------------------------------------------------ 0040123B push ecx 0040123C call esi ; RegSetValueExA 0040123E mov ecx, [esp+8] 00401242 push 100h 00401247 push offset unk_406030 0040124C ; ------------------------------------------------------- 0040124C push 1 0040124E push 0 00401250 push offset aCode ; "Code" 00401255 ; -------------------------------------------------- 00401255 push ecx 00401256 call esi ; RegSetValueExA 00401258 mov eax, [esp+8] 0040125C push eax 0040125D call ds:RegCloseKey 代码结束
IDA另一个优点(快速相加):
1. 能够对w32dasm无法反汇编的最难的软件进行反汇编(如加壳程序)
2. 能够以.asm .sym 和甚至是 .exe及其它文件形式保存
3. 压缩的静态汇编,可以节省大量的磁盘空间。
4. 可以重命名函数
5. 能够分析巨大的程序
等等.... ;-)
III. w32dasm??
你看完了后你现在可以自问"如果IDA这么好看,为什么我还要使用w32dasm?"下面就是对于这个的解释:
首先是速度,对于IDA来分析一个小程序是非常非常的快,但是如果分析一个大的exe它就要花费3个小时或更多的时间来全面分析exe。
其次,如果你对于一个指定的搜索,IDA将很慢的,而在w32dasm中在文本方面中搜索是很快的。
第三:当分析一个仅有简单的保护的程序时,w32dasm就为首选。因为你就不需要在IDA那些附加的功能了。
上面的三个因素可以说明一切了 :-) 如果你知道其它的使用w32dasm原因的话,请告诉我。
IV. 结束
又一个教程结束了。享受IDA and w32dasm以及所有.....享受研究和保持学习和继续研究和破解吧。不是为了解密,仅是文章,写下你的文章,传播你的知识。对于解密这是重要的来说。不要用于解密吧。
感谢大家