iOS OLLVM コンパイルからアプリケーションまで (Hikari)

iOS OLLVM のコンパイルからアプリケーションまで

ここで言うまでもなく、OLLLM は、文字列難読化や制御フロー難読化など、コンパイル中にコードを混乱させるために使用されます。これにより、静的解析を逆コンパイルする際に命令の実行ロジックをスムーズに明らかにすることができなくなり、APP の静的解析が大幅に増加し、APP が保護されます。

ヒカリ

私たちはオープンソースプロジェクトHikariを使用しており、GitHubは
以下をサポートしています:
1. 擬似制御フローの有効化
2. 制御フローの平坦化
3. 基本ブロックのセグメント
化 4. 命令置換
5. アンチクラスダンプ
6. レジスタに基づく相対ジャンプ、IDA/Hopper (一般に F5 として知られています)
7、文字列暗号化
8、関数のカプセル化などの疑似コードを完全に破壊することができます。
これ以上の苦労はせずに、直接トピックに進みましょう。

1. 環境構築

1.1 CMAKEのインストール

ソースコードからコンパイルされるため、cmakeをインストールする必要があります。
公式 Web サイトのダウンロード アドレス: https://cmake.org/download/
適切なバージョンを見つけてダウンロードします。私のバージョンは

cmake --version
cmake version 3.10.2

インストール、構成:
メニュー バーから選択します: [ツール] - コマンド ラインで使用するインストール方法

cmake --version

インストールが完了したかどうかをテストします。

1.2 SWIGのインストール

公式 Web サイトにアクセスしてSWIGをダウンロードします。私はバージョン 3.0.12 を使用しています。
ダウンロードが完了したら、解凍して swig-3.0.12 と入力します。

./configure
make
sudo make install

インストールが完了したかどうかをテストする

swig -version

1.3 Z3のインストール

brew install z3

2. ヒカリをダウンロード

最新バージョンのソース コードを使用しています。リリース
には他の GitHub 参照があるため、自分でダウンロードして指定された場所に置く必要があります:
1.ヘッダーを /include/llvm/Transforms/Obfuscation に置きます。
2.コアを/lib/Transforms/Obfuscation に置きます。

3. コンパイル

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 固有の環境をコンパイルするときに、次の 2 つのエラーが報告されます:
不完全な型 'struct stat64' への 'sizeof' の適用が無効です
不完全な型 'struct statfs64' への 'sizeof' の適用が無効です

ここに画像の説明を挿入
現時点では, エラー ファイル projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc を見つけるには、ファイルを開いて対応する内容を変更します:
struct stat64 を struct stat
truct statfs64 を truct statfs に
変更します。 3. ninja を実行すると、致命的なエラー: Lipo: / Build/lib/libclang_rt.builtins_arm64_ios.a と /Build/lib/libclang_rt.builtins_arm64_iossim.a は同じアーキテクチャ (arm64) を持ち、同じ Fat 出力ファイル内に置くことはできません

ここに画像の説明を挿入

M1 チップの arm64 アーキテクチャもコンパイル中に存在するため、build.ninja を直接変更し、対応する Lipo -output コマンドを見つけて、M1 チップの arm64 アーキテクチャを削除してマージします。
-arch arm64 /ボリューム/IosWorkSpace/OLLVM/Hikari/Build/lib/libclang_rt.builtins_arm64_iossim.a

コンパイルを続行します

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

ファイルのマイニングに進み、
ディレクトリ /usr/local/libexec を作成できません。おそらく必要です。

ここに画像の説明を挿入

これは、指定されたインストール パスに権限がないため、Makefile の次のパラメータを変更する必要があるためです。

将:
"/usr/local/libexec"

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

おすすめ

転載: blog.csdn.net/weixin_38367103/article/details/126623210