Obfuscating API Library Names Using Dynamic Name Resolution

Haruaki Tamada, Masahide Nakamura, Ken‐ichi Matsumoto · 2007

あらまし 名前難読化とは,プログラム中の名前(識別子)を別の名前に付け替えることで,プログラムを理 解しづらいものにするソフトウェア保護手法である.従来の名前難読化手法は,各名前を静的に別の文字列で置 換するものであり,プログラム中に現れる任意のユーザ定義の名前を隠ぺいできる.しかしながら,従来手法を 用いてシステム定義の名前(標準ライブラリや API の呼出し等)を難読化することは,プログラムの移植性を 著しく低下させるため,現実的に不可能である.そこで本論文では,オブジェクト指向言語を対象に,システム 定義の名前をも隠ぺい可能な新たな名前難読化手法を提案する.具体的には,プログラム中の名前使用部分をあ らかじめ暗号化しておき,実行時に名前を復号して当該処理を実行する,動的名前解決の仕組みを導入する.提 案手法では,オブジェクト指向言語のリフレクション機構を用いて,クラスの参照,メソッド呼出し,フィール ドの参照・代入に現れる任意の名前を動的解決する方法を実現している.また,提案手法を Java プログラム用 に実装し評価実験を行った.ある実用プログラムへの適用では,4.11 倍の性能劣化でプログラム中のすべてのク ラス名,メソッド名,フィールド名(計 10,580 回出現)を難読化できることが分かった. キーワード ソフトウェア保護,著作権保護,難読化,オブジェクト指向,リフレクション

Read the paper · More papers on PaperTik