-1

この住所アドレスは .exe ファイルに含まれています。C# Windows フォーム アプリケーションを実行して、アドレスの 16 進部分に新しい番号を書き込めるようにしたいと考えています。つまり、"C0/EA/03"であり、" 03"をアプリケーションに書き込んだ番号に変更し、変更を保存します。それは可能ですか?もしそうなら、それを行う方法を教えてください。前もって感謝します。

より具体的にするために、私はこれをしたい:

-例(無効、単なる例) -

ここに画像の説明を入力

そのため、ボタンをクリックすると、前に示したアドレスの 03 が FF (255 hex) になります。

4

1 に答える 1

2

OllyDbg のスクリーンショットのように見えますが、そうですか? 次の質問は、これを実行時に行うか (注入)、または静的な exe ファイルで行うか (パッチ) です。

ファイルにパッチを適用するには、その特定のバイトの exe ファイル内の実際のオフセットを把握する必要があります。これを行うには、PE ファイルのテキスト セクションを識別し、テキスト セクションのベース アドレスに移動してから、テキスト セクションにオフセットする必要があります。オフセットを取得するには、Olly や ndisasm などの逆アセンブラーを使用する必要があります。命令を見つけてshr dl,3、ロードされたテキスト セクションのベースからのその命令のオフセットを計算します。ロードされた仮想アドレスは、ファイル内のアドレスと同じではないことに注意してください。0x538695 はおそらく読み込まれた仮想アドレスですが、問題の説明からはわかりにくいです (Olly のフォントのように見えるため、仮想アドレスだと推測しています)。とにかく、そのオフセットを PE EXE ファイルのテキスト セクションのベースに追加すれば、準備は完了です。

これはおそらく、LordPE のようなツールを使用すると簡単に実行できます。

http://www.tech-juice.org/2011/02/21/portable-executable-converting-rva-to-file-offset-and-back/

于 2012-10-01T21:59:58.060 に答える