- stringをchar配列にしてランダムな順番で文字を格納(文字列による検索の回避)
- 関数ポインタを使用する
- jmpやjmpiを使用する(ディスコンパイルの回避)
- 関数名や変数名を数字にする(バイナリレベルでの難読化)(ディスコンパイルの回避、ただし自動で名前を付け直すディスコンパイラもある)
- エミッタを使用して実行時にコードを生成する
- モジュールレベルの関数や変数を使用する(ディスコンパイルの回避(C#))
対Lutz Roeder's .NET Reflector †
- 継承によるメンバ関数のオーバーロードをファイル化プラグインが解決できない(オーバーロード先の関数名 を オーバーロード元の関数名 に自動で変更しない)ので、関数名の違うオーバーロードを多用する(ディスコンパイルの回避)
厳密には難読化でない気もするけど最終手段 †
- マネージドC++を使う(ディスコンパイルの回避)
- アンマネージドDllを呼び出す
|
Last-modified: Mon, 27 Jul 2009 03:06:23 JST