反向工程应用程序与反编译应用程序的核心区别是什么?
#1 楼
反编译只是逆向工程的一种方法。反编译说明:
反编译是分析可执行文件或目标代码二进制文件并以C之类的编程语言输出源代码的过程。该过程涉及将文件从低抽象级别转换为更高抽象级别。
反编译通常是使用反编译器进行的。 :
逆向工程是通过分析设备,对象或系统的结构,功能和操作发现其技术原理的过程。
可以对软件进行反向工程和反编译。许多其他事物(例如硬件,门锁)可以反向工程但不能反编译,因为它们的软件/固件是用低级语言编写的,没有高级表示,或者更根本地讲,它们没有任何东西首先是固件。
#2 楼
逆向工程师更为笼统:您想以自己的方式理解二进制文件的功能。例如。这可能会导致对其功能的描述,甚至可能会模拟其(部分)功能。反编译用于产生源代码,这些源代码(在编译时)会给您“相同”的二进制代码,这通常是一项艰巨的任务。#3 楼
逆向工程是一个广义的术语,其中反编译只是一个功能强大的工具。反编译是静态分析的一种形式,它通过不运行程序来研究程序。不要忘记,逆向工程也可能意味着拆解正在运行程序的设备。我最喜欢的一些漏洞处理方法是使用某些内存的属性在关闭计算机后继续保持值。逆向工程的一小部分详尽的技术列表:字符串”以发现二进制文件中的所有可读文本。在未打包的文件上,这通常可以提示您二进制文件在哪个平台上编译。如果二进制文件是用符号编译的,则您甚至可以访问作者使用的变量名,这有助于后续分析。
反编译-> Cruder技术可能包括objdump等unix工具,在十六进制编辑器中打开二进制文件等。
动态分析模糊测试->抛出多种(可能)无效数据以查看应用程序如何响应
结合上面的模糊测试,您可以了解应用程序在关卡上的实际工作寄存器和组装。 (如果使用GDB或ollydbg。)
在设备的电路或辐射上“窃听”->这很奇怪,但是真实的。因此,反编译只是更广泛的“逆向工程”工具包中的一种工具。