こんにちは。LINEでクライアント保護ソリューションであるAIR ARMORの開発を担当しているCHUNG SANG MINです。以前、「iOSのコード署名について」という記事では、SIM MINYOUNGさんがiOSアプリの完全性や署名者を検証できるiOSのコード署名について説明しました。今回の記事では、アプリの改ざんや盗用を防ぐために独自で開発している難読化ツールを紹介したいと思います。サンプルソースコードを利用してコンパイラ動作の各段階を確認し、難読化がどのように行われるかを見てみます。
ORK(オーク)とは?
実行ファイル保護技術であるパッカーの限界
LLVMコンパイラインフラ
LLVMコンパイラインフラベースの難読化ツール、ORK
Clangのコンパイル過程
前処理(preprocessor)
構文解析(parsing)
LLVM IR(Intermediate Representation)
最適化(optimizer)
コンパイラバックエンド(compiler backend)
アセンブラ(assembler)
リンカー(linker)
おわりに