反汇编与逆向编程的区别
反汇编:一般是只对编译器根据高级语言生成的本机二进制可直接在芯片上执行的机器码”解析“为人类可读的汇编形式的代码(实际上最最早期的计算机操作员具备直接阅读机器码和使用机器码编程的能力,不需要转换为汇编形式,这是计算机普及,程序规模也爆炸性增大后,人们就有需要转换为汇编代码来读懂机器码程序)
早期的反汇编目的是编译器生产商用来检查编译器生成代码的性能。
当今主要在得不到源代码的情况下,研究分析其他人的程序,如病毒程序的分析,系统漏洞的挖掘,或者黑\灰色产业链里的山寨抄袭功能等。通过反汇编分析其功能、算法、逻辑等。
反汇编实际就属于逆向过程,分析得到别人的功能、算法、逻辑后,再根据得到的信息再开发、增加补丁开发、防御产品开发等,在开发的过程根据实际需求而言,比如分析汇编代码得到的一个算法,可以用任意其它编程语言再现,这就是逆向编程了
逆向编程属于逆向工程,
逆向编程一般指根据反向分析别人程序的功能而使用其它编程语言编程再现该功能。
反向分析(逆向工程)不仅仅是反汇编,对不同系统平台语言平台芯片平台的不同也囊括不同内容,如反汇编则基本有对各种芯片(如8086、arm、c51等芯片的反汇编)
反汇编实际属于反编译,反编译就包括各种语言从低级或中间级语言到高级语言的解析
如.NET平台的C#就可由中间语言MSIL反编译成C#
Java平台的就可由.class中的Java字节码反编译为Java代码
后有其它的dex虚拟机的字节码,自定义的虚拟机字节码等等
总言之,反汇编属于反编译的一个分支,
反编译是实现逆向编程的必经步骤
这些都属于IT界的”逆向工程“范畴。
反汇编就是把目标代码转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级的意思,常用于软件破解(例如找到它是如何注册的,从而解出它的注册码或者编写注册机)、外挂技术、病毒分析、逆向工程、软件汉化等领域。
逆向编程属于逆向工程,逆向编程一般指根据反向分析别人程序的功能而使用其它编程语言编程再现该功能。