混淆还原的几种方式实践
💡
原文中文,约5600字,阅读约需14分钟。
📝
内容提要
本文探讨了使用goron进行符号执行和模拟执行的混淆还原方法,包括控制流平坦化、间接跳转分析及混淆处理。通过手动计算跳转地址和替换指令,结合工具实现自动化,强调了手动还原的重要性。
🎯
关键要点
- 探讨使用goron进行符号执行和模拟执行的混淆还原方法。
- 控制流平坦化还原涉及序言块、真实块、ret块和分发器的识别。
- 间接跳转还原通过手动计算跳转地址并替换指令实现。
- 混淆全开时,先处理间接跳转,通过汇编代码特征找到条件指令。
- 符号执行适合处理初始化好的块,模拟执行适合复杂运算的跳转。
- 强调手动还原的重要性,工具仅替代手动部分的批量实现。
❓
延伸问答
什么是混淆还原的控制流平坦化?
控制流平坦化还原涉及识别序言块、真实块、ret块和分发器,以便恢复代码的执行流。
如何进行间接跳转的还原?
间接跳转还原通过手动计算跳转地址,并根据条件判断替换指令实现。
在混淆全开的情况下,如何处理间接跳转?
在混淆全开时,首先处理间接跳转,通过汇编代码特征找到条件指令并替换相关指令。
符号执行和模拟执行的适用场景是什么?
符号执行适合处理初始化好的块,而模拟执行适合复杂运算的跳转。
手动还原在混淆还原中有何重要性?
手动还原在混淆还原中至关重要,工具仅能替代手动部分的批量实现,最终结果仍依赖手动还原。
使用goron进行混淆还原的优势是什么?
使用goron进行混淆还原可以结合符号执行和模拟执行的优点,提高还原的效率和准确性。
➡️