upx、ollvm相关概念

295 阅读1分钟

upx:可执行程序文件加壳器

主要功能是压缩PE文件(exe、dll等),其余功能有:

1、  保护正规文件,使之不易被修改和破解

2、  保护杀毒软件安装程序,使之不受病毒侵害

3、  木马,病毒的保护外壳,使之难以被攻破。

UPX使用UCL压缩算法,为NRV算法的一个开源部分实做。UCL算法在解压缩过程中不需要额外的存储器。

ollvm混淆有三种模式:

1、  流程平坦化

主要将if-else转换为do-while语句,然后通过switch语句来对流程控制,模糊基本块之间的前后关系。

-mllvm -fla:激活控制流扁平化

-mllvm -split:激活基本块分割,一起使用时改善展平

-mllvm -split_num=3:如果激活了传递,则在每个基本块上应用三次。默认值为1

2、  指令替换

主要通过使用更复杂的指令序列来替换一些标准的二元运算符(+ - & | ^),从而增加逆向的难度

-mllvm -sub:激活指令替换

-mllvm -sub_loop=3:如果激活了传递,则在函数上应用三次。默认为1。

3、  控制流伪造

用多层判断逻辑(if-else)包裹真正代码,编译速度会慢很多

-mllvm -bcf:激活虚假控制流程

-mllvm -bcf_loop=3:如果激活了传递,则在函数上应用三次。默认为1。

-mllvm -bcf_prob=40:如果激活了传递,基本块将以40%的概率进行模糊处理,默认为30。

4、  其他

-mllvm -sobf:开启字符串混淆

-mllvm -seed=0xdeadbeaf指定随机数种子生成器

参考文献:

heroims.github.io/2019/01/06/…

cloud.tencent.com/developer/a…

zh.wikipedia.org/wiki/UPX#%E…

zh.wikipedia.org/wiki/LLVM

zh.wikipedia.org/wiki/Clang