質問

これは、2部構成の質問です。しかし、両方とも同じものに関係しています。

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

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

役に立ちましたか?

解決

すでに ECMA-335 を読んでいる人として仕様を複数回 and し、2つの異なる言語でCLIイメージローダーを実装しました(1つで完全なIL分析を行います)。これは、1)これを行っていないことと、2)簡単な答えを探しているようだからです。スペックは間違いなくあなたの出発点であるべきです。

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

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

編集:これにより、.NETアセンブリの詳細な構造について学ぶ必要がなくなるわけではありませんが、実際の実装に時間を節約でき、難読化ロジックをローダーから明確に分離した状態に保つのに役立ちます。

他のヒント

MSILを読むには、 thisに必ずあります。スレッド

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

これはMicrosoft SDKにあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top