Relector と Debugger のマッシュアップを使用して、ソース コードがまったくなくても .NET アプリをデバッグできるようです。これは可能ですか?誰もこれを見たことがありますか?
7 に答える
Reflector 用のDeblectorプラグインを使用すると、Reflector から直接デバッグできます。
私はこれをずっと前に試しましたが、成功しませんでした。それ以来、リフレクターはかなり改善されているので、今日は可能かもしれないと思います。
そう考えると本当に怖いですよね。誰かがあなたのアプリを逆コンパイルして完全なコードを入手し、それを変更して独自のバージョンを配布する可能性があります。すべてオープンソースではありません。しかし、繰り返しになりますが、それが「彼ら」が難読化ツールを作成した理由です。
Reflector Pro を使用すると、まさにこれを行うことができます。
リンクが見つかりませんが、誰かがリフレクター ソースを使用して、ステップ スルーできる 1.1 フレームワークのデバッグ バージョンをコンパイルしました。私は 2.0 フレームワークを試してみましたが、あまりにも多くのエラーが見つかりました。
これを試してみたい場合は、FileDisassemblyrなどのプラグインから始めてください。これに関する私の簡単な経験では、修正すべきエラーがいくつかあることがわかりましたが、それほど悪くはありません。
中小規模のライブラリでは、この方法は非常に実行可能です。
私はそれを見て、以前にやったことがあります。私はそれを使って、私たちのアプリが彼が思っていたほど保護されていないことを上司に示しました. DLL を入手し、ソース コードを入手したところ、彼は実際に心臓発作を起こしました。
.Net Reflector が故障するシナリオもありますが、そうするのは難しいです。私は積極的に試してきたので知っています。優れた難読化ツールを使用すると、コードが非常に管理不能/読み取り不能になり (パラメーターに基づいてさまざまなことを実行するために "a" 関数をオーバーロードするなど)、ソースを確認しても意味がありませんが、デバッグは可能です。頑張ってください。何が起こっているのか。
いいえ、デバッグしようとしているアプリケーションに属するシンボル ファイル (.PDB) ファイルが必要です。
Reflector を使用すると、IL から読み取り可能な .NET コードに移行できますが、意味を維持するのは、開発者によって記述された正確なコードではありません。そのため、PDB と Reflector のソースがあったとしても、デバッグには適していません。
リフレクターからのソース出力を使用して .NET プロジェクトを作成し、デバッグするアセンブリの独自のバージョンを生成できると思います。ただし、これは通常、非常に面倒なことです。.NET フレームワークの場合、Microsoft は、関心のある人が使用できるようにデバッグ情報を公開しています。
ある時点で、Reflector でデバッグ用のプラグインがあったことを覚えていますが、それを機能させることはできませんでした。
.NET Framework ソース コードをデバッグするための Visual Studio の構成
MSDN: PDB ファイル
これは可能ですが、大規模で複雑なアプリケーションでは実際には実用的ではありません。特に、ラムダや初期化子などの最近の構造が多数使用されている場合はそうです (手動で修正する必要がある CS$4$0000 のようなドル記号を含む変数名が大量に得られます)。 . 単純な switch ステートメントでさえ、Reflector で goto ステートメントでいっぱいの非常に醜いスパゲッティ コードを引き起こす可能性があります。
私は、MSIL にデコミしてデバッグ モードで再コンパイルするという幸運に恵まれました。その後、IL ファイルにブレーク ポイントを配置し、VS で通常のデバッガー機能をすべて使用できます。MSIL は最初は少し怖く見えますが、すぐに慣れます。
この優れた記事では、その方法について説明しています: http://www.codeproject.com/KB/dotnet/Debug_Framework_Classes.aspx