如何使用 Yurichev 的《初学者逆向工程》一书?

逆向工程 部件
2021-06-15 08:27:30

我刚刚读完了兰德尔·海德 (Randall Hyde)的《组装艺术》一书

所以现在为了让我的脚在组装/逆向工程阅读中沾沾自喜,我开始读《初学者逆向工程》一书问题是当我编写 C 示例并生成汇编代码时,正如作者所说,我在 GCC 中获得的程序集与一位作者提供的程序集不同。(我gcc -S -O3用于那些据说在书中优化的)。

我该怎么做才能获得像书一样的结果,或者如果获得像作者那样的结果不是重点,我如何才能从这本可爱的书中获得最大收益?

2个回答

我该怎么做才能获得像书一样的结果?

只需使用相同版本的编译器并编译与作者相同架构的代码即可。通常,会明确说明使用哪个编译器版本来获取特定程序集。例如:

GCC_version

或者

GCC_version2

因此,使用了多个不同版本的编译器,如果您想获得相同的结果,则必须使用每个清单中描述的版本。

或者如果获得像作者这样的结果不是重点

这绝对不是重点关键是在阅读这本书时尽可能多地学习

我什至会说得到与书中这些不同的结果可能更好。有几个原因:

  1. 您将了解较新版本的 GCC 编译器如何处理相同的 C 代码,例如什么是新的优化方法。
  2. 您会看到不同的程序集执行与前一个相同的任务 - 当您看到很大的差异时,您可能想要思考或搜索有关它的更多信息,这样您就会更好地记住它。
  3. 它鼓励您理解生成的程序集,以便您可以将其与作者展示的程序集进行比较——它比仅仅复制您已经展示的内容更具创造性和生产力。

我怎样才能充分利用这本可爱的书?

我会说,通过实践如果你不练习你刚刚学到的东西,你会很快忘记它。您甚至可以省略在那里编写的一些程序,然后自己进行实验(如作者建议的那样)——只需编写一些代码并尝试在反汇编中找到它的片段。

你只需要一个像gccdebug或静态分析这样的编译器来理解代码