work_代码混淆引入保留前缀加密

来源:互联网 发布:单片机红外线控制开关 编辑:程序博客网 时间:2024/06/06 20:32

0.
在某一个函数内加入一对
char start[]="start";
char stop[]="stop";
则混淆start与stop之间的可混淆的条件判断,分支跳转

 

 

1.
clang -c -emit-llvm name.c -o name.bc

2.
llvm-dis name.bc
生成中间语言文件 name.ll

3.
perl delnote.pl name.ll
删除可混淆icmp判断语句后的注释,生成delnote.ll文件

4.
perl search_range.pl delnote.ll
寻找可混淆icmp的判断结果变量与对应的判断范围,并保存在test.txt文件中

5.
./prefix
计算前缀,结果保存在output_c.txt文件中

6.
python bit_enc.py
hash计算前缀文件output_c.txt,结果保存在output_py.txt文件中

7.
perl my1.pl delnote.ll
混淆delnote.ll文件,结果保存在delnote.ll.obf文件中

8.llvm-as delnote.ll.obf
将生成的混淆文件编译为bc文件

9. llc delnote.ll.obf.bc -o delnote.ll.obf.s
生成汇编语言文件
可以将其他    .c文件----->.bc----->.s

10.
clang allfile.s -o obf.native -lcrypto
将所有的.s文件编译链接为可执行程序

 

 

限制:
1.%2 = icmp i32 slt %1 , 0
不可以,小于零,则范围为(0,0-1)=(0,-1)
2.%2 - icmp i32 eq  %1,  512
不可以,哈希计算<512的数据,不能处理512及以上大的数据
3.同一c文件内多个函数,每个函数内一对start/stop开关。

 

 

 

 

 

 

 

 

原创粉丝点击