cafebabe.jp 日々のよしなしごとをのたまうブログ.

84月/110

難読化手法 ― 名前難読化


プログラム中の名前の定義部分を変更し,意味のない名前に変更する.例えば,maxという変数名をv1のような名前に変更する.このアルゴリズムは,現在発表されている難読化ツールのほとんどが実装しており,変換後の名前の決め方に各難読化ツールの特色が表われている.

例えば,Dash-ODotfuscator には オーバーロード誘導 (Overload induction) というアルゴリズムが採用されている.これはオブジェクト指向のオーバーロードを巧みに利用しており,変換後の名前空間が最小になるように多くのメソッドにオーバーロードの関係を持たせる.

他にも,変換後の名前を予約語にしたり,また,非印字文字にする方法も考えられる.実際の難読化ツールの例では,個人的には,数値の連番か,文字の連番(aaa, aab, aac, ...)が多いように思う.

この難読化には嬉しい副作用があり,難読化ツールの中にはこの副作用を売りにしているものもある.その副作用とは,バイナリのサイズが縮小されることである.

この難読化手法を用いると,多くの名前が決められた文字数内に収まるように変更される.通常,プログラム中に含まれる名前は意味のある名前にするため,英単語なり,なんらかの意味のある文字列であり,文字数は決まっていない.この意味のある文字列の長さは難読化後の名前の長さよりも一般に長いために,この副作用が起きる.

この副作用は,難読化一般とは相反するものであるが,難読化ツールの説明などで用いられており,また,理解も容易なため,そして,難読化ツール自身も謳い文句に挙げているため,「難読化するとバイナリのサイズが縮小する」と誤解を与えている面もある.

 
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

Spam Protection by WP-SpamFree

No trackbacks yet.