11

.NET で作成された、頻繁に使用するプログラムがあります。このプログラムには非常に迷惑な小さなバグがあり、アプリの開発者はどこにも見つかりません。

リフレクターで問題の場所を見つけたので、ここに単一の if ステートメントを追加して、プログラムを再コンパイルしたいだけです。

これを行う最も簡単な方法は何ですか?

リフレクターでエクスポート機能を使用してみましたが、完全には機能していないようです。たとえば、多くの using ディレクティブが欠落しており、int にキャストされた enum も適切にエクスポートされません。私はこれをいくつかの作業で修正できると信じていますが、これを行うより簡単な方法があるかどうか疑問に思っています.

更新:これを行うことで解決しました:

プログラムは単一の実行可能ファイルです

  1. C#-view でリフレクターのバグを見つけます。次に、IL ビューに切り替えて、手順 5 で何を探すべきかを確認します。
  2. ildasm で変更したいプログラムを開きます
  3. ダンプを押して空のフォルダーを選択すると、デフォルト設定が機能しました。
  4. このフォルダーで .il ファイルを見つけて、任意のテキストエディターで開きます
  5. ステップ 1 のコードを見つけます。
  6. それを新しいコードに置き換えます。私の場合、関数のすべての内容を単純なリターン (IL_0000: ret) に置き換える必要がありました。すべての修正がこれほど簡単になるとは思いません。
  7. 手順 3 のフォルダーでコマンド ウィンドウを開きます。
  8. ilasm を実行します。元の exe からいくつかのリソースも含める必要がありました。これらはildasmで自動出力されます。この ilasm を次のように使用しました"C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe" test.il /resource=test.res /output=FixedProgram.exe

終わり!私は今、修正されたプログラムを数分しか使用していませんが、バグを除いて以前と同じように動作するようです:)

また、アプリケーションの設定でいくつかの問題が発生しました。%appdata%\ProgramNameには、すべての設定が格納されているProgramName.exe_Url_qa5i3p42aomuvoxpuxuficvbmngksgjsのようなフォルダーがありました。私の新しい実行可能ファイルは、このような新しいフォルダーを作成し、最後にさまざまなランダムな文字を付け、デフォルト設定を使用しました。以前に使用した設定をコピーするには、古いフォルダーのすべての内容を新しいフォルダーにコピーするだけです。

4

6 に答える 6

8

ReflectorにはReflexilプラグインを使用することをお勧めします。アセンブリを簡単に変更でき、メソッドの本体を独自の C# コードに置き換えることもできます。

于 2009-10-05T09:13:21.940 に答える
2

すでに述べた方法よりも簡単にこれを行う方法はないと思います。私は実際に似たようなプログラムを ILDASM で逆コンパイルしましたが、かなり手間がかかりました。

もっと簡単な方法があれば私も知りたいです。

于 2009-10-05T08:57:54.607 に答える
2

ILDASM と ILASM を使用して往復できます。これは大きな変更には実用的ではありませんが、あなたの場合はうまくいくはずだと思います。

于 2009-10-05T08:58:45.010 に答える
1

この .NET Reflectorアドインを試してください。

これは私にとってはうまくいきました。コンパイルできない「Complier Generated」タグを作成することがあります。ただし、これは手動で簡単に修正できます。

于 2009-10-05T09:01:25.190 に答える
1

プログラムが単純な場合、理論的には、リフレクターを使用してプログラム全体を C# に戻し、変更を加えて再コンパイルすることができます。

または、 ILDasmなどのツールを試すこともできます。これにより、IL を抽出し、(MSIL で) 変更を加え、( ILAsmを使用して) 再アセンブルできます。明らかにこれを行うには、IL で変更を記述する方法を理解する必要があるため、if ステートメントがどのようにコンパイルされるかを確認するために、おそらくいくつかの実験を行う必要があります。

再コンパイルを機能させるには、どちらもかなりの手間がかかると思います。

幸運を。

あなたがそれを機能させたら、投稿して私に知らせてください.

于 2009-10-05T08:59:54.800 に答える
0

telerik ただ逆コンパイル (無料) 次に、reflexil プラグイン

上記で2分の仕事(私は他のすべての方法を試しました!!)

于 2012-11-27T13:06:46.887 に答える