花指令就是无用或者垃圾指令,故意干扰反汇编静态分析工具,比如
jmp Label1
db opcode
Label1;
运行会跳到Label1,但是静态分析工具看到opcode会把后面当作机器码的操作数。
或者
jz Label
jnz label
db opcode
label
反汇编引擎不够智能看到jz,jnz往下执行,所以错误。
或者
可以跳转到寄存器里。
OLLVM
混淆工具。给予LLVM底层虚拟机的混淆可以
- control flow flattening控制流平展模式,干部程序执行流程,加分支
- Instruction Substitution 指令替代模式,
- 控制流伪造模式,与第一个不同的是会插入不确定的代码快,通过判断跳回原来的代码块中,改变流程