🗣 研究概要

本稿では,ソフトウェアの不正解析に対抗する難読化手法について提案する. 今日では,プログラム内の何を隠すのかの目的により,多くの手法が提案され,さらにツールも提供されている. その中で,本稿では,名前難読化に着目し,機械的なコールフローグラフ(CFG)の作成を妨げる手法について述べる. キーアイデアとして,Java 7で導入されたinvokedynamic命令に着目する. この命令を使うと,メソッドの呼び出しを java.lang.invoke.MethodHandles オブジェクトを介して行うようになる. MethodHandlesでは,呼び出したいメソッドとそのメソッドに渡す引数を予め設定することができ,その設定はinvokedynamicのオペランドでの指定よりも設定が優先される. そのため,invokedynamic命令のオペランドのみを見ると,本来呼び出されるメソッドとは異なるメソッドを呼び出すと誤認させられると期待できる. 提案手法を適用したクラスファイルを逆コンパイルしたところ,Procyon のみが成功し,jad, Krakatauの2つのツールはクラッシュした. また,逆コンパイル結果を被験者9名が解析したところ,8名が誤った解析を行った.

(福田 收真, 玉田 春昭, ‘‘メソッド呼び出し関係隠蔽のための引数順序の入れ替えによる難読化’’, 2014年暗号と情報セキュリティシンポジウム予稿集 (SCIS2014), 2D2-3, January, 2014. 概要)

📚 業績

  1. 福田 收真, 稲垣 賢一, 玉田 春昭, ''メタプログラミング技法を用いた偽装難読化手法'', 2015年暗号と情報セキュリティシンポジウム予稿集(SCIS2015), 3B4-3, January 2015 (福岡, 小倉).
  2. 稲垣 賢一, 福田 收真, 玉田 春昭, ''メソッド呼び出しのフックを用いた動的コールフローグラフ偽装の試み'', 2015年暗号と情報セキュリティシンポジウム予稿集(SCIS2015), 3B4-2, January 2015 (福岡, 小倉).
  3. Kazumasa Fukuda, Haruaki Tamada, ''To Prevent Reverse-Engineering Tools by Shuffling the Stack Status with Hook Mechanism'', International Journal of Software Innovation (IJSI), Vol. 3, No. 3, pp. 14--25, 2015.
  4. 福田 收真, 玉田 春昭, ''メソッド呼び出し関係隠蔽のための引数順序の入れ替えによる難読化'', 2014年暗号と情報セキュリティシンポジウム予稿集 (SCIS2014), 2D2-3, January 2014.
  5. 福田 收真, 玉田 春昭, ''フックを用いた変数アクセス偽装難読化に向けて'', ソフトウェア工学の基礎XXI, 日本ソフトウェア科学会 FOSE2014 (FOSE2014), pp. 81--86, December 2014.
  6. 福田 收真, 玉田 春昭, ''Java 7におけるAPI名隠ぺいのためのinvokedynamic命令を用いた難読化の試み'', コンピュータセキュリティシンポジウム 2013 (CSS 2013) No.3D4-2, pp. 1050--1057, October 2013.


🔎 関連する研究トピック・助成