混淆还原的几种方式实践

💡 原文中文,约5600字,阅读约需14分钟。
📝

内容提要

本文探讨了使用goron进行符号执行和模拟执行的混淆还原方法,包括控制流平坦化、间接跳转分析及混淆处理。通过手动计算跳转地址和替换指令,结合工具实现自动化,强调了手动还原的重要性。

🎯

关键要点

  • 探讨使用goron进行符号执行和模拟执行的混淆还原方法。
  • 控制流平坦化还原涉及序言块、真实块、ret块和分发器的识别。
  • 间接跳转还原通过手动计算跳转地址并替换指令实现。
  • 混淆全开时,先处理间接跳转,通过汇编代码特征找到条件指令。
  • 符号执行适合处理初始化好的块,模拟执行适合复杂运算的跳转。
  • 强调手动还原的重要性,工具仅替代手动部分的批量实现。

延伸问答

什么是混淆还原的控制流平坦化?

控制流平坦化还原涉及识别序言块、真实块、ret块和分发器,以便恢复代码的执行流。

如何进行间接跳转的还原?

间接跳转还原通过手动计算跳转地址,并根据条件判断替换指令实现。

在混淆全开的情况下,如何处理间接跳转?

在混淆全开时,首先处理间接跳转,通过汇编代码特征找到条件指令并替换相关指令。

符号执行和模拟执行的适用场景是什么?

符号执行适合处理初始化好的块,而模拟执行适合复杂运算的跳转。

手动还原在混淆还原中有何重要性?

手动还原在混淆还原中至关重要,工具仅能替代手动部分的批量实现,最终结果仍依赖手动还原。

使用goron进行混淆还原的优势是什么?

使用goron进行混淆还原可以结合符号执行和模拟执行的优点,提高还原的效率和准确性。

➡️

继续阅读