3

このコードで:

 Dim sf As New StackFrame(0, True)
 MessageBox.Show("Module: " & sf.GetFileName & " -Line: " & sf.GetFileLineNumber.ToString)

ハンドルされていない例外が発生したクラスと行番号を取得できます(でApplicationEvents.vb, Sub MyApplication_UnhandledException(...) Handles Me.UnhandledException)

しかし、EazFuscator を使用してコードを難読化すると (おそらく他のものも使用して)、データが失われます。NullString が返され、行番号が 0 になります。

コードの挿入:

<Assembly: Obfuscation(Feature:="encrypt symbol names with password XXXX", Exclude:=False)>

何も変わりません。e.message を逆コンパイルできますが、行が失われています。難読化されたコードでエラーの行を取得するにはどうすればよいですか?

4

2 に答える 2

6

いいえ、それは不可能です。これは意図されたものです。未処理の例外は、潜在的な攻撃者にとっての情報源です。通常、最初のテスト ラウンドに合格した後、本番ビルドにのみ難読化を適用する必要があります。難読化されたアセンブリをデバッグしようとしないでください。特に、デバッグを防ぐために難読化されています。

情報を取得できない本当の理由は、難読化プロセスによってデバッグ シンボルがアセンブリから取り除かれていることです。アセンブリに有効な PDB ファイルがある限り、その情報が表示されます。

于 2016-06-30T17:24:28.687 に答える