![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LLVM
文章平均质量分 56
Arielwyy
这个作者很懒,什么都没留下…
展开
-
ollvm学习——混淆步骤
在build目录下 bash run.sh,编译生成.so文件切换到test目录下:opt -load ../build/Obfuscation/libollvm.so -bcf testAnd.bc -o testAnd3.bcopt -dot-cfg testAnd3.bcdot -Tpng .main.dot -o testAnd3.png原创 2020-08-13 20:40:54 · 371 阅读 · 0 评论 -
ollvm学习——虚假控制流
虚假控制流程序先收集函数中所有的 BasicBlock 和 alloca 指令,然后再随机挑选 BasicBlock 加上虚假控制流。这个 Pass 通过被选中的 BasicBlock 生成虚假的 BasicBlock,然后再使用不透明谓词将这两个 BasicBlock 连在一起。在构建虚假BasicBlock时,首先复制原来的original BasicBlock,然后再修复虚假的 BasicBlock,例如修复 phi 节点和编译时生成的 metadata。构造虚假BasicBlock的思路原创 2020-08-12 17:46:15 · 363 阅读 · 0 评论 -
LLVM学习——IR指令
1. alloca该指令用于分配内存堆栈给当前执行的函数,当这个函数返回它的caller时会被自动释放。e.g. %a = alloca i32, align4解释:i32表示32位,4字节。LLVM中将整数类型定义为i N,其中N是整数所占用的位数,这里N取32 align 4表示向4“对齐”:即便数据没有占用4个字节,也要为其分配4字节。比如你需要使用64进制数字,那就只要i48, align 6即可2.load/storeload是读出内容,store是写入内容%0 = l原创 2020-07-05 12:27:58 · 763 阅读 · 0 评论