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

194月/110

増分難読化


DotfuscatorDash-O に代表される難読化ツールに搭載されている機能の一つで,最近見る難読化ツールにはよく見られる.

難読化はプログラムコードを読みにくく変換する.そして,その変換作業において,プログラムコード上の多くの様々な情報と整合性を持たせて,変換後のプログラムも実行に支障がでないようにする必要がある.そのため,従来の難読化ツールはプログラムの実行に要する全てのファイルを与えられなければ正常に実行できる難読化後のプログラムを得ることはできなかった.

この増分難読化は上記の従来の制限を取り外すもので,難読化ツールにプログラム全体を常に与える必要はないものである.難読化処理にも時間がかかるため,プログラムの規模が大きくなると,毎回全てのプログラムコードを難読化していると,オーバーヘッドが無視できない場合がでてくる.そのため,変更が行われた部分のみを難読化ツールに与えて実行可能なプログラムを得る機構である.

具体的な方法として,名前難読化であれば,名前をどのように変換したのかのマッピング情報を同時に与えることで可能である.この増分難読化の実装はツールに依存し,全ての難読化手法で有効であるとは限らない.

備考

ここで,難読化を導入したプログラムの開発の流れを説明する.人が編集するするプログラムはあくまで理解しやすく書くプログラムであり,難読化ツールが出したコードを人が編集することはまずない.

  1. 人がプログラムを編集.ここでプログラムをpとする.pは難読化前である.
  2. pがコンパイルできることを人が確認
  3. pを難読化ツールにかけ,p'を得る.p'は難読化されたコードを表す.
  4. p'をプログラムの仕様に則っているかをテストする.

ただし,開発初期のときは難読化ツールにかけずにpをテストすることになる.

 
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

Spam Protection by WP-SpamFree

No trackbacks yet.