山石网科安全技术研究院简称“山石安研院”正式成立于2020年4月,是山石网科的信息安全智库部门,山石安研院旗下包括干将、莫邪两大安全实验室,以及安全预警分析、高端攻防培训两支独立的技术团队。
目录
今天看啥  ›  专栏  ›  山石网科安全技术研究院

从CFG图中分析ollvm控制流平坦化混淆源码

山石网科安全技术研究院  · 公众号  · 科技自媒体  · 2024-08-22 18:34
    

主要观点总结

本文介绍了从CFG图中分析ollvm控制流平坦化混淆源码的过程,包括概览、分析源代码和结语。

关键观点总结

关键观点1: 控制流平坦化(Control Flow Flattening)是作用于控制流图的代码混淆技术,其基本思想是通过插入一个“主分发器”来控制基本块的执行流程,将每个basicblock都转为switch中的case,抹去原分支逻辑关系。

文章首先介绍了控制流平坦化的概念和基本思想,然后详细阐述了如何将ollvm的flatten以插件形式移植到llvm18 new pass中,包括概览、分析源代码和结语三个部分。

关键观点2: 文章通过具体的例子详细解释了控制流平坦化的实现过程,包括将if语句转换为switch语句,将基本块保存到向量中,生成switch随机的case值,将基本块放入switch中,修正各个bb(case块)的连接关系等步骤。

这个过程涉及到了LLVM IR和CFG图的转换,以及控制流图的修改,需要深入理解LLVM的工作原理和代码混淆技术。

关键观点3: 文章最后提到了控制流平坦化的变种和魔改,指出目前对于程序保护不再使用标准的控制流平坦化,而是使用各种变种,这些变种已经非常多样化,没有通用的反flatten方法。

这提醒我们在面对代码混淆时需要根据具体情况进行分析,了解所使用的混淆技术的基本原理和特性,才能更好地进行逆向工程和安全分析。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照