成为优秀Reverser的编译器知识

逆向工程 艾达 调试 二元分析 恶意软件 反汇编者
2021-06-13 18:31:48

刚刚在《逆向:逆向工程的秘密》一书中触及到编译器的话题,所以,我想问一下,编译器的知识是成为恶意软件逆向工程师所必需的吗?

任何人都可以请指导我吗?☺️

1个回答

如果给你一段用一种你以前从未见过的语言编写的源代码,你会想要研究该语言的语法和规则,以便了解这段代码在做什么。

编译器将高级人类友好语言(例如 C)转换为 CPU 可以直接运行的二进制指令。这些二进制指令称为汇编。

了解程序从人类友好的语言编译成二进制指令的过程对任何编写程序的人都有帮助,因为它可以让您推理计算机上实际发生的事情。学习编译器可以帮助你理解编译器在汇编中编写程序时的语法和规则。

编译器会做各种聪明的事情来使程序“更好”或“更快”。他们可以删除永远不会执行的代码,他们可以重新排序代码块以使用更少的内存,他们可以在编译时预先计算常量值而不是在执行时运行它们。

通过了解编译器可以做什么,您可以了解它在创建程序集时如何重写程序。作为逆向工程师,识别这些模式可以让您推理原始的人类友好代码在做什么。

了解编译器及其输出将更容易发现何时将不同的东西引入到现有程序中。

编译器之于计算机,就像飞行的发现之于交通。它们是一项革命性的技术突破,通常被认为是理所当然的。

两个首选参考文献是厄尔曼(俗称“龙书”)和阿佩尔(俗称“虎书”)。或者关于 Compilers 的维基百科您可以花20 美元购买一本二手的Ullman早期版本这是值得的。