iOS OLLVM从编译到应用(Hikari)

iOS OLLVM从编译到应用

OLLVM在这里就不用多说了,他是用于在编译期,将代码进行混淆,包括字符串混淆和控制流混淆。使得在反编译静态分析时,不能很流畅的理清指令执行逻辑,极大增加了APP静态分析,从而保护APP。

Hikari

我们使用开源项目Hikari,GitHub
支持:
1、启用伪控制流
2、控制流平坦化
3、基本块分割
4、指令替换
5、反class-dump
6、基于寄存器的相对跳转,配合其他加固可以彻底破坏IDA/Hopper的伪代码(俗称F5)
7、字符串加密
8、函数封装
等等,废话不多说,直接进入正题。

一、环境配置

1.1 安装CMAKE

由于是源码编译,需要安装cmake。
官网下载地址:https://cmake.org/download/
找个合适的版本下载,我的版本是

cmake --version
cmake version 3.10.2

安装,配置:
从菜单栏选择:Tools—How to Install For Command Line Use

cmake --version

测试是否安装完成。

1.2 安装SWIG

去官网下载 SWIG,我用的是3.0.12版本。
下载完成,解压,进入swig-3.0.12

./configure
make
sudo make install

测试是否安装完成

swig -version

1.3 安装Z3

brew install z3

二、下载Hikari

我用的是最新版本源码,Release
由于内部存在其他GitHub引用,需要自行下载并放到指定位置:
1、将Header放到 /include/llvm/Transforms/Obfuscation 内。
2、将Core放到 /lib/Transforms/Obfuscation 内。

三、编译

mkdir Build
cd Build
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DLLVM_APPEND_VC_REV=on ../Hikari
ninja

先排雷:
1、执行cmake -G “Ninja” -DCMAKE_BUILD_…时,一般都是缺少东西,按照上面说的下载对应文件放到指定目录,基本上编译通过。
2、执行ninja时,在编译iOS特定环境时,会报两个error:
invalid application of ‘sizeof’ to an incomplete type ‘struct stat64’
invalid application of ‘sizeof’ to an incomplete type ‘struct statfs64’

在这里插入图片描述
此时,要找到报错的文件 projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ,打开在文件将对应的:
struct stat64 改为 struct stat
truct statfs64 改为 truct statfs
3、执行ninja时,fatal error: lipo: /Build/lib/libclang_rt.builtins_arm64_ios.a and /Build/lib/libclang_rt.builtins_arm64_iossim.a have the same architectures (arm64) and can’t be in the same fat output file

在这里插入图片描述

编译时也存在M1芯片的arm64架构,所以我们直接修改build.ninja中,找到对应lipo -output命令,去掉M1芯片arm64架构合并。
-arch arm64 /Volumes/IosWorkSpace/OLLVM/Hikari/Build/lib/libclang_rt.builtins_arm64_iossim.a

编译继续

ninja install
git clone https://github.com/HikariObfuscator/Resources.git ~/Hikari

继续排雷
file cannot create directory: /usr/local/libexec. Maybe need

在这里插入图片描述

这是由于指定的安装路径没有权限,需要修改Makefile的以下参数

将:
"/usr/local/libexec"

修改为:
"$(ROMFS)/usr/local/libexec"

猜你喜欢

转载自blog.csdn.net/weixin_38367103/article/details/126623210