最后的建议

恭喜你!如果你已经读到这本书的这一部分(编者注:这条评论实际上只适用于我们已经完成了所有待办事项的时候),那么你已经了解了开始使用 angr 进行二进制分析所需的所有基本组件。

最终,angr 只是一个模拟器。它是一个高度可插拔且非常独特的模拟器,考虑了很多环境因素,这是真的,但其核心是,你使用 angr 所做的工作是关于提取一堆字节码在 CPU 上如何运行的知识。在设计 angr 时,我们试图为你提供在这个模拟器之上的工具和抽象,以使某些常见任务更有用,但没有什么问题是你不能通过使用 SimState 并观察 .step() 的影响来解决的。

随着你进一步阅读这本书,我们将描述更多技术主题以及如何调整 angr 的行为以应对复杂的场景。这些知识应该能指导你使用 angr,以便你能以最快的方式解决任何给定的问题,但最终,你将希望通过利用手头的工具来发挥创造力来解决问题。如果你能将一个问题处理成具有定义明确且可处理的输入和输出的形式,那么只要这些目标涉及分析二进制文件,你绝对可以使用 angr 来实现你的目标。我们提供的任何抽象或工具都不是如何使用 angr 完成给定任务的终极方法——angr 的设计使其可以根据你的需要以集成或临时的方式使用。如果你看到从问题到解决方案的路径,就去走它。

当然,要熟悉像 angr 这样庞大的技术是非常困难的。为此,你绝对可以依靠社区(通过 angr Discord 服务器 是最好的选择)来讨论 angr 及其解决问题的方法。

祝你好运!