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/…