我刚刚读完了兰德尔·海德 (Randall Hyde)的《组装艺术》一书。
所以现在为了让我的脚在组装/逆向工程阅读中沾沾自喜,我开始读《初学者逆向工程》一书。问题是当我编写 C 示例并生成汇编代码时,正如作者所说,我在 GCC 中获得的程序集与一位作者提供的程序集不同。(我gcc -S -O3
用于那些据说在书中优化的)。
我该怎么做才能获得像书一样的结果,或者如果获得像作者那样的结果不是重点,我如何才能从这本可爱的书中获得最大收益?
我刚刚读完了兰德尔·海德 (Randall Hyde)的《组装艺术》一书。
所以现在为了让我的脚在组装/逆向工程阅读中沾沾自喜,我开始读《初学者逆向工程》一书。问题是当我编写 C 示例并生成汇编代码时,正如作者所说,我在 GCC 中获得的程序集与一位作者提供的程序集不同。(我gcc -S -O3
用于那些据说在书中优化的)。
我该怎么做才能获得像书一样的结果,或者如果获得像作者那样的结果不是重点,我如何才能从这本可爱的书中获得最大收益?
我该怎么做才能获得像书一样的结果?
只需使用相同版本的编译器并编译与作者相同架构的代码即可。通常,会明确说明使用哪个编译器版本来获取特定程序集。例如:
或者
因此,使用了多个不同版本的编译器,如果您想获得相同的结果,则必须使用每个清单中描述的版本。
或者如果获得像作者这样的结果不是重点
这绝对不是重点。关键是你在阅读这本书时尽可能多地学习。
我什至会说得到与书中这些不同的结果可能更好。有几个原因:
我怎样才能充分利用这本可爱的书?
我会说,通过实践。如果你不练习你刚刚学到的东西,你会很快忘记它。您甚至可以省略在那里编写的一些程序,然后自己进行实验(如作者建议的那样)——只需编写一些代码并尝试在反汇编中找到它的片段。
你只需要一个像gcc
和debug
或静态分析这样的编译器来理解代码