マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

逆コンパイル・難読化などの質問が稀にあるため。

詳細

難読化ソリューションは、

  • 実行時コンパイラや
  • スクリプト言語が

出てきて、必要になってきたんじゃないでしょうか?

逆コンパイラ

C言語

C言語のプリプロセッサに通した後のコードは≒リバースできないもよう。

  • 奇跡的に C/C++ の逆コンパイラを手に入れられたとしても
    それが吐き出すソースを理解できる可能性は全くない。
  • C++ の逆コンパイラは C よりもはるかに困難 (事実上不可能)

※ 機械語自体を読む人がいるかも知れないので、保護したいレベルによるかもしれませんが。

スクリプト言語

  • スクリプト・ファイルがそのまま動く。
  • インタプリタでソースコードを、機械語プログラムに解釈・変換しながら処理・実行する。

中間コードのある言語

以下の理由で、逆コンパイルが容易であるケースが多いらしい。

  • 中間コードはネイティブコードに比べて命令の種類や複雑さが少ない。
  • 逆コンパイルされ易い言語
    • ガーベージ・コレクションやリフレクション機能のある言語
  • その他、
    • 共用体が無い
    • ポインタ演算・キャストの制限
    • classに定義情報が含まれる。
    • goto 文を禁止している
    • , etc.
  • 言語毎のツール
  • Java:
    JAD(Jad Decompiler)
  • .NET:
  • IL Disassembler(ildasm.exe)
    Visual Studioに付属
  • .NET Reflector
    昔は無償で一択だったが、2011年の3月に有償化された。
  • dotPeek
    ReSharper?に付属
  • ILSpy
    MITのOSSでスタンドアロンで利用可能。
  • Telerik JustDecompile?
    Telerik社製
  • .NET CodeReflect?

難読化

  • 難読化は単なる時間稼ぎに過ぎず、プログラムの逆コンパイルを不可能とするものではない。
  • 商用の難読化ソリューションはソースコードの難読化やJavaや.NETなどのプラットフォーム中立な
    バイトコードの変換が大部分を占めるが、中にはコンパイルされたバイナリに直接作用するものも存在する。

C言語

そもそも、逆コンパイルができないので難読化も不要。

スクリプト言語

そもそも、コンパイルがないので難読化もできない。

中間コードのある言語

  • 逆コンパイルが容易なため、難読化が必要になるケースもある。
  • 言語毎のツール
  • Java:
    • ProGuard?
    • JODE
    • JavaGuard?
    • RetroGuard?
    • jarg
    • yGuard
  • .NET:
    • ConfuserEx?(無料)
    • NanDoKu?(無料)
    • Phoenix Protector(無料)
    • Dotfuscator(有料 – 簡易版有り)
    • Eazfuscator.NET(有料 – 試用版有り)
    • babelfor.net(Babel)(有料 – 試用版有り)

参考

逆コンパイラ

難読化


Tags: :プログラミング, :その他、開発の色々, :.NET開発


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-11-05 (金) 21:52:45 (71d)