OLLVM混淆学习(3)——指令替换(SUB) 2022年07月09日 Jev0n 5091 0x01 指令替换基本介绍指令替换就是将正常的二元运算指令(如加法、减法、异或等等),替换为等效而更复杂的指令序列,以达到混淆计算过程的目的。它仅支持整数运算的替换,因为替换浮点指令会造成舍入的错误和误差。最近这四篇LLVM混淆的文章都是来自看雪“LLV... 阅读全文 1 评论
OLLVM混淆学习(2)——虚假控制流(BCF) 2022年07月08日 Jev0n 4884 0x01 虚假控制流基本介绍简单的说就是在原来的程序流程中克隆原基本块,利用不透明谓词将克隆的基本块作为永不可达的虚假分支,并在这个不可达的虚假分支中随机添加垃圾指令,以达到程序混淆的效果,得到的程序流程图和控制流平坦化不同,是程长条型的。所谓不透明谓词... 阅读全文 0 评论
OLLVM混淆学习(1)——控制流平坦化(FLA) 2022年07月08日 Jev0n 5985 0x01 控制流平坦化基本介绍控制流平坦化是指将正常程序控制流中基本块之间的跳转关练删除,用一个集中的主分发块来调度基本块的执行顺序。相当于把原有程序正常的逻辑改为一个循环嵌套一个switch的逻辑。正常情况:控制流平坦化之后:控制流平坦化的基本结构如下... 阅读全文 0 评论
OLLVM混淆学习(0)——环境搭建及混淆初体验 2022年07月07日 Jev0n 7264 0x01 LLVM环境搭建该小节环境搭建和原版OLLVM混淆使用无关,仅为后续LLVM PASS编写做准备,如仅需要进行OLLVM混淆该小节可跳过我选择的环境为Ubuntu 18.04、LLVM 12.0.1、CMake 3.16.6先下载LLVM和Cl... 阅读全文 0 评论