混淆技术研究-OLLVM混淆-虚假控制流(BCF)

简介

虚假控制流(BCF, Bogus Control Flow),该方法通过在当前基本块之前添加一个基本块来修改函数调用图。这个新的基本块包含一个不透明谓词,然后进行条件跳转到原始基本块。并且原始基本块也被克隆,并填充了随机选择的垃圾指令。(This method modifies a function call graph by adding a basic block before the current basic block. This new basic block contains an opaque predicate and then makes a conditional jump to the original basic block.The original basic block is also cloned and filled up with junk instructions chosen at random.)详见官方解释1

原理

一句话总结 构造虚假基本块,通过不透明谓词进行条件跳转到真实基本块

  • 不透明谓词原理: 利用全局变量来构造条件表达式以制造虚假控制流,因为这个全局变量不会有写入的地方,所以这个表达式即一条结果恒定的条件表达式,因此始终只会走向一个真实分支,而另外的虚假分支即一个永不到达的分支.
  • 条件跳转: 通过大量的if-esle进行条件跳转(识别BCF的标志)

反混淆思路

  1. 永不到达的虚假基本块应该被死代码消除(DCE, Dead Code Elimination)࿰

你可能感兴趣的:(混淆技术研究,ollvm,Android逆向,反混淆)