Using unevaluated obfuscation methods has a significant risk since the methods might have some vulnerabilities. One evaluation for obfuscation is de-obfuscation which …
ソフトウェア内部に含まれる秘密情報を保護するために,ソフトウェア保護技術が広く用いられている. その一つに,プログラム中の秘密情報を秘匿するために,プログラムを読みにくく変更する難読化手法がある. プログラム中のどの特徴に着目して,読みにくく変更するかにより,異なる手法が提案されている. その中でも特に広く使われている難読化手法が名前難読化で …
プログラム中の秘密情報を保護するため,理解が困難になるようプログラムを変更する難読化手法が数多く提案されている. しかし,難読化の堅牢性と有効性についての議論は十分ではない. 中でも,シンボル名を意味のない名前に変換する名前難読化は数多くのツールに採用されながらも評価は行われていない. そこで,本研究課題は,名前難読化に焦点を当て,堅牢性と有 …
本稿では、Javaを対象としてソフトウェア保護機構のステルシネスを評価する。 ステルシネスとは、ソフトウェア保護機構が適用されたコードと適用されていないコードの区別のつきにくさを示す指標である。 ソフトウェアを不正に解析しようとする者はソフトウェア保護機構の解析をしなければならないため、ステルシネスはソフトウェアを保護する者にとって保護手法を …
本稿では,ソフトウェアの不正解析に対抗する難読化手法について提案する. 今日では,プログラム内の何を隠すのかの目的により,多くの手法が提案され,さらにツールも提供されている. その中で,本稿では,名前難読化に着目し,機械的なコールフローグラフ(CFG)の作成を妨げる手法について述べる. キーアイデアとして,Java 7で導入され …
本稿では、Java で作成されたソフトウェアを対象に、類似した命令列を持つメソッドの畳み込みを行う手法を提案する。 畳み込みとは、まず、類似した命令列を一つの命令列にまとめる。 そして、命令列間の差分は自己書き換えを用いて、実行時に適切な命令へと書き換える。 ソフトウェアの解析、改ざん(tamper)が困難にすることを目的とし、耐タンパ性を高 …
従来の Java プラットフォームにおけるプログラム保護はバイトコード(クラスファイル)の静的な変換が多くを占めており,静的解析には耐性があるものの,動的解析については脆弱であると指摘されている. それにも拘わらず,動的解析技術のみが進歩し,動的解析に対抗する保護技術については議論されてこなかった. 一度ロードしたクラスはいかなる変更もできな …
名前難読化とは,プログラム中の名前(識別子)を別の名前に付け替えることで,プログラムを理解しづらいものにするソフトウェア保護手法である. 従来の名前難読化手法は,各名前を静的に別の文字列で置換するものであり,プログラム中に現れる任意のユーザ定義の名前を隠蔽できる. しかしながら,従来手法を用いてシステム定義の名前(標準ライブラリやAPIの呼び …