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