9

シンボル名の暗号化をオンにして(Eazfuscatorスタックトレースデコーダーを使用できるように)Eazfuscatorを使用してvb.netアセンブリを難読化した場合、PDBファイルを出荷すると、これは効果的に元に戻されますか?エラーレポートで返送されるスタックトレースで行番号を取得できるように、PDBファイルを出荷したいと思います。

出荷されたバージョンのPDBファイルを保持することで行番号を取得できることはわかっていますが、これは現在必要のない複雑さの追加レイヤーであり、将来実装する予定です。PDBファイルを含めることで、難読化されていないコードを効果的に出荷していないことを確認したいだけです。

アドバイスをよろしくお願いします。

4

2 に答える 2

4

PDBには実際のコードは含まれていません。しかし、難読化後、PDBはバイナリと互換性がなくなると強く感じています。これがPDB内にあるものです

  • パブリック、プライベート、および静的関数アドレス
  • グローバル変数の名前とアドレス
  • パラメータとローカル変数の名前と、スタック上のそれらを見つける場所のオフセット
  • クラス、構造、およびデータ定義で構成されるタイプデータ
  • フレームポインタ省略(FPO)データ。これは、x86上を歩くネイティブスタックの鍵です。
  • ソースファイル名とその行

私が理解している限り、難読化は非公開の型、メソッド、パラメーターなどを台無しにします。したがって、元のILオフセットを変更しない場合は、行番号を表示しても機能する可能性がありますが、実際には難読化された情報が提供されます。回復可能かどうか。

難読化解除について非常に懸念している場合は、リッチロギングを追加することをお勧めします。

于 2011-08-30T13:18:32.213 に答える
4

いいえ、PDBファイルを出荷しても難読化が役に立たなくなるわけではありません。ただし、PDBファイルにはローカル変数の名前を含めることができるため、Reflectorなどの逆アセンブラが使用できるもう1つの情報であることに注意してください。PDBファイルには、ソースコードファイルのフルパスを含めることもできますが、機密情報を公開するという点で害を及ぼすことはめったにありません。

Crypto Obfuscatorのような一部の難読化ツールはPDBファイルの生成をサポートします-難読化後、スタックトレースが正しいままになるように、難読化されたアセンブリと同期する新しいPDBファイルを出力します。さらに、PDBファイルには、上記のソースコードファイルの難読化された名前が含まれています。また、PDBファイルからすべてのローカル変数名を取り除きます。

免責事項:私はCryptoObfuscatorの開発者であるLogicNPSoftwareで働いています。

于 2012-05-01T10:06:19.373 に答える