LLVM(基本的混淆)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里我生成了两个,一个优化前的,一个优化后的
在这里插入图片描述
在这里插入图片描述
这看着不太明显,因为我就写了
在这里插入图片描述
看看下面这个
在这里插入图片描述
在这里插入图片描述
左边是优化后的

1)指令替换功能:随机选择一种功能上等效但更复杂的指令序列替换标准二元运算符;适用范围:加法操作、减法操作、布尔操作(与或非操作)且只能为整数类型。 操作指令:

 
-mllvm -sub: activate instructions substitution
 
-mllvm -sub_loop=3: if the pass is activated, applies it 3 times on a function. Default : 1.

  示例代码: 

 
//替换前
 
a = b - (-c)
 
%0 = load i32* %a, align 4
 
%1 = load i32* %b, align 4
 
%2 = sub i32 0, %1
 
%3 = sub nsw i32 %0, %2
 
//替换后
 
a = -(-b + (-c))
 
%0 = load i32* %a, align 4
 
%1 = load i32* %b, align 4
 
%2 = sub i32 0, %0
 
%3 = sub i32 0, %1
 
%4 = add i32 %2, %3
 
%5 = sub nsw i32 0, %4

 2)混淆控制流功能:1.在当前基本块之前添加基本块来修改函数调用图。2.原始基本块也被克隆并填充随机选择的垃圾指令。

 操作指令:

 
-mllvm -bcf: activates the bogus control flow pass
 
-mllvm -bcf_loop=3: if the pass is activated, applies it 3 times on a function. Default: 1
 
-mllvm -bcf_prob=40: if the pass is activated, a basic bloc will be obfuscated with a probability of 40%. Default: 30

 3)控制流平展功能:目的是完全展平程序的控制流程图。我自己的理解是if...else变为switch..case..语句。

   操作指令:

 
-mllvm -fla: activates control flow flattening
 
-mllvm -split: activates basic block splitting. Improve the flattening when applied together.
 
-mllvm -split_num=3: if the pass is activated, applies it 3 times on each basic block. Default: 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Back~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值