上QQ阅读APP看书,第一时间看更新
第1章 通过逆向工程学习如何读懂二进制代码
大家是否听说过“逆向工程”这个词呢?
逆向工程原本是指通过拆解机器装置并观察其运行情况来推导其制造方法、工作原理和原始设计的行为,但在软件领域,逆向工程主要指的是阅读反汇编(将机器语言代码转换成汇编语言代码)后的代码,以及使用调试器分析软件行为等工作。
程序员都应该知道,处理器是通过解释和执行机器语言代码来运行程序的,但对现在的程序员来说,对机器语言代码进行反汇编并跟踪其行为并不是一项必备技能。换句话说,“知道是知道,但没亲自尝试过”这种情况比较普遍。
笔者是一位喜爱汇编语言的工程师,但也并不认为上面的现象有什么问题。实际上,我自己除了汇编以外,平时也经常使用C、Python、JavaScript等其他语言。不过,有些东西适合用C、Python、JavaScript来编写,同样也有一些东西适合用汇编语言来编写。更进一步说,在某些技术领域中,不懂汇编就无法工作。
经常和处理器层面的东西打交道的工程师被称为Binarian。尽管这些人并不能说多么伟大,但他们的确运用着很多鲜为人知的技术,你想不想玩玩看呢?
在本章中,我们将通过软件的逆向工程,探索一下二进制世界的奥秘。