1

これは2つの部分からなる質問の一種です。しかし、それは両方とも同じことに関係しています。

アプリのILコードを使用してパッチを適用したいと思います。私は正しいアプローチは何だろうかと思っています。明らかに、私はそれを逆コンパイルし、ilコードファイルを読んで編集してから再コンパイルすることができました。しかし、ファイル内でmsilコードとして読み取る方法はありますか。リアルタイムで編集するかもしれません。

実行可能ファイルの逆コンパイルされたコードを編集しようとしていました。しかし、再コンパイルするたびに、実行に問題が発生します。もうそのエントリポイントを見つけることができなかったように。どうすればそれを計算できますか?コマンドとそのパラメータの長さを知る必要があると思います。または、エントリポイントをラベルなどにする必要があります。このようなもののためのVisualStudioテンプレートがあればいいのにと思います。

4

2 に答える 2

6

すでにECMA-335仕様を複数回読み、 CLIイメージローダーを2つの異なる言語実装した(完全なIL分析を1つにした)人として、これはまだ私にとって難しい作業だと思います。これは、1)まだ行っていないことと、2)簡単な答えを探していることの両方が原因であると言えます。スペックは間違いなくあなたの出発点でなければなりません。

最小限の手順は次のとおりです。

  • PEイメージ(exeまたはdll)をロードします
  • すべてのメソッドのバイトコードを解析し、シンボルを解決します
  • コード変換を適用します(もちろん、プライベートメソッドの名前変更などの単一の変換が最小限になります)
  • 結果を新しいPEイメージとして保存します

編集:これにより、.NETアセンブリの詳細な構造について学ぶ必要がなくなりますが、実際の実装にかかる時間を節約し、難読化ロジックをローダーから完全に分離するのに役立ちます。

于 2009-09-09T18:31:17.543 に答える
1

MSILを読むために、このスレッドには確かにあります:

ildasm.exe-中間言語逆アセンブラ。このツールを使用すると、コンパイルされたコードをMSILレベルで表示できます。

これはMicrosoftSDKにあります。

于 2009-09-09T18:32:48.043 に答える