混淆工具插件-OLLVM

Python010

混淆工具插件-OLLVM,第1张

可查到.

OOLVM-JSF基於 https://www.jianshu.com/p/e0637f3169a3

但是会出现 ___isOSVersionAtLeast 该异常,需要前往/build/lib/clang/版本号/lib/drawin/中添加/替换libclang_rt.ios.a

替换的方法.

直接在

在该路径下的libclang_rt.ios.a 添加/替换/build/lib/clang/版本号(8.0.0)/lib/drawin/下的

OLLVM-SF基於OLLVM-X5文件去迭代.其中只是替换了libclang_rt.ios.a 可使用混淆参数为

OLLVM-X5 基於 https://github.com/obfuscator-llvm/obfuscator.git 编译的.

开始重新布置混淆工具

制作OLLVM混淆工具插件.

https://www.jianshu.com/p/e0637f3169a3 //作者混淆工具

配置Xcode--新建Obfuscator插件

以上一个Obfuscator插件就完成了.

打开Xcode-项目-BuildSettings

以上为OLLVM当前项目混淆.

混淆方法一: InstructionsSubstitution

[html] view plain copy

-mllvm -sub: activate instructions substitution

-mllvm -funcSUB="func1,func2,func3": if instructions substitution is activated, apply it only on functions func1, func2 and func3

-mllvm -perSUB=20: if instructions substitution is activated, apply it with a probability of 20% on each function

2. 混淆方法二: BogusControlFlow

[html] view plain copy

-mllvm -bcf: activates the bogus control flow pass

-mllvm -funcBCF="func1,func2,func3": if the pass is activated, applies it only on functions func1, func2, func3

-mllvm -perBCF=20: if the pass is activated, applies it on all functions with a probability of 20%. Default: 100

-mllvm -boguscf-loop=3: if the pass is activated, applies it 3 times on a function. Default: 1

-mllvm -boguscf-prob=40: if the pass is activated, a basic bloc will be obfuscated with a probability of 40%. Default: 30

3. 混淆方法三: ControlFlow Flattening

[html] view plain copy

-mllvm -fla: activates control flow flattening

-mllvm -funcFLA="func1,func2,func3": if control flow flattening is activated, apply it only on functions func1, func2 and func3

-mllvm -perFLA=20: if control flow flattening is activated, apply it with a probability of 20% on each function

4. 如何用开源 source code 编译出混淆器O-LLVM ?

[cpp] view plain copy

$ git clone -b llvm-3.5 https://github.com/obfuscator-llvm/obfuscator.git  

$ mkdir build

$ cd build

$ cmake -DCMAKE_BUILD_TYPE:String=Release ../obfuscator/

$ make -j5

编译后的结果只有bin 和 lib 是有用的,其余的都可以删除:

TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序。目前,该项目在GitHub上已经积累了10.1k的Star。

如下为一个示例程序,当运行在任何支持的带板载LED的主板上时,则会点亮内置LED。

上述程序可以在单片机、Adafruit ItsyBitsy M0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可。例如,设置如下目标可以编译和点亮 单片机。

项目概述

TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型。另一个区别在于TinyGo在内部使用LLVM,因而可以获得更小更高效的代码以及更高的灵活性。

创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行。

支持设备

你可以为微控制器、WebAssembly和Linux编译TinyGo程序。目前,TinyGo支持以下85种微处理器板。

更多技术细节请参阅原项目。