什么都是从简单开始发展的,反汇编也不例外,最近学习了如何在VC中查看及反汇编代码,反汇编在新手看来都是很神秘的东西(也包括我),感觉很牛,不过也倒是,反汇编犹如武侠中的"吸星大法",这个比喻一点都不过分,会了"吸星大法"的人想要谁的功夫只要一伸手就可以得来,不过能练成"吸星大法"的牛人也不多,因为在练习的时候要坚受苦练......
那么在软件也不例外,什么九阴白骨爪,吸星大法,葵花宝典,等等,其中"吸星大法"最为邪恶。为了"吸星大法"还是一步一个招式,慢慢往下练。
先来看看最简单的if语句debug反汇编,代码如下:
F10启动单步调试,然后右键 Go To Disassembly转到汇编视图,如下:
test反汇编函数如下:
当然我们在实际反汇编的过程中是反汇编Release也没有源代码可对比的,上面是源吗加debug反汇编,看起来跟我们写的程序结构式很相符的。但是到了Release版本,编译器对代码做了很多的优化以及处理,代码的结构跟原来作者所表达的思想是截然不同的,但是结果都是一样的。下面我们来看看最简单的if语句Release反汇编,用OD加载Release版本的程序,然后走入程序入口,反汇编代码如下:
通过以上分析可以看出Release版本和debug版本代码完全不一样,Release是通过编译器优化处理,也是发行版,比debug难读懂。而我们在实际过成中反汇编都是针对Release,所以还是得需要多多练习,从简单开始,多对比debug和Release版生成的汇编代码的不同,循循渐进,慢慢练成属于自己的"吸星大法"!