博文

目前显示的是 六月, 2017的博文

LLVM-Symbol Obfuscation的采坑之旅 依然踩坑中...

1.要判断数据类型,如果GlobalVariable的getInitializer()为空和dyn_cast转为ConstantDataArray的getInitializer()不是isCString(),都要跳过,不能进行混淆。 2.改名前后的长度要一致。

Cross-compile the LLVM + clang

1.Checkout llvm/clang/compiler-rt(optional) 2.Organize the directory like: llvm/ /tools/ clang /projects/ compiler-rt 3.Run the script below in Terminal. $ mkdir build $ cd build $ cmake -DCMAKE_BUILD_TYPE:String=Release ../obfuscator/ $ make -j5 //5 is the compiler threads, make it bigger to compile faster.

LLVM的LTOPass插件编写

由于LLVM出色的结构,所以我们可以很方便的在LLVM中添加我们自己想要的功能,比如代码结构优化、代码混淆、代码膨胀、控制流混淆等。 参考文档: LLVM.org - WritingAnLLVMPass LLVM.org - LinkTimeOptimization 我们要做的就是编写我们自己的LTOPass模块,然后将其注册进LLVM的代码中然后进行编译。 注册方法: 编写我们自己的Pass模块 修改llvm/Transforms/IPO/PassManagerBuild.cpp 然后把自己的Pass放进 populateLTOPassManager 中 把模块放进 llvm/Transforms/IPO/LLVMBuild.txt 中 编译!

iOS 安全笔记 - App加固方法

iOS Class-Guard -> Symbols Obfuscator Obfuscator-LLVM -> Code Obfuscate Custom LLVM IR 基于libLTO的修改方案(混淆符号) http://llvm.org/docs/LinkTimeOptimization.html