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