通常,编写程序是利用高级语言如C,Pascal等高级语言进行编程的,然后再经过编译程序生成可以被计算机系统直接执行的文件。反汇编即是指将这些执行文件反编译还原成汇编语言或其他高级语言。但通常反编译出来的程序与原程序会存在许多不同,虽然执行效果相同,但程序代码 会发生很大的变化,非编程高手很难读懂。
另外,有许多程序也可以 进行逆向 *** 作即反编译以求修改,例如Flash的文件生成的SWF文件,也可以被反汇编成Flash原码,但会发现与原程序有很大变化。反汇编可以通过反汇编的一些软件实现DEBUG也能反汇编的,DEBUG文件位置-u,这样就能实现了。
静态反汇编是从反汇编出来的程序清单上分析,从提示信息入手进行分析。目前,大多数软件在设计时,都采用了人机对话方式。所谓人机对话,即在软件运行过程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助信息。为此,如果我们对静态反汇编出来的程序清单进行阅读,可了解软件的编程思路,以便顺利破解。
常用的静态分析工具是W32DASM、OllyDbg IDA和HIEW等。简单地讲,反汇编可以看到软件作者的编程思路,可以破解部分资源,可以将软件汉化等,例如找到它是如何注册的,从而解出它的注册码。
当然有区别,不然弄两个同义词与意思么?汇编:是把汇编源程序转变为目标程序(当然还不是最终的可执行的,因为还没有连接程序);
编译:就是把通过用高级语言编写的源程序通过编译器转变为目标程序;
反汇编:将可执行的文件中的二进制经过分析转变为汇编程序。
反编译:将可执行的程序经过分析转变为高级语言的源代码格式,一般完全的转换不太可能,编译器的优化等因素在里面。
汇编是将汇编语言源程序翻译成目标程序的过程;编译是将高级语言源程序翻译成目标程序的过程;
反汇编是汇编的逆过程,即将目标程序翻译成汇编程序的过程;
反编译是编译的逆过程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)