OLLVM混淆学习(3)——指令替换(SUB)

0x01 指令替换基本介绍指令替换就是将正常的二元运算指令(如加法、减法、异或等等),替换为等效而更复杂的指令序列,以达到混淆计算过程的目的。它仅支持整数运算的替换,因为替换浮点指令会造成舍入的错误和误差。最近这四篇LLVM混淆的文章都是来自看雪“LLV...

OLLVM混淆学习(2)——虚假控制流(BCF)

0x01 虚假控制流基本介绍简单的说就是在原来的程序流程中克隆原基本块,利用不透明谓词将克隆的基本块作为永不可达的虚假分支,并在这个不可达的虚假分支中随机添加垃圾指令,以达到程序混淆的效果,得到的程序流程图和控制流平坦化不同,是程长条型的。所谓不透明谓词...

OLLVM混淆学习(1)——控制流平坦化(FLA)

0x01 控制流平坦化基本介绍控制流平坦化是指将正常程序控制流中基本块之间的跳转关练删除,用一个集中的主分发块来调度基本块的执行顺序。相当于把原有程序正常的逻辑改为一个循环嵌套一个switch的逻辑。正常情况:控制流平坦化之后:控制流平坦化的基本结构如下...