2

古い放棄されたゲームを修正して、ライフを無限にします。

命令を含むアドレスは、dec ecxデバッグされた .exe 内の位置と同じではありません。

古い友人が、.exe 内の命令で「真の」アドレスを取得する式があると教えてくれたのを思い出しました。チート エンジンがメモリ アドレスを教えてくれます。数式でモジュールを取得する必要があったことを覚えています。OllyDbg で取得します。でも式が思い出せない。誰かがその数式がどのようになっているのか知っていますか? 計算式はとっても簡単!ファイルの位置を取得して .exe を完全に変更する別の方法はありますか?

4

2 に答える 2

1

もちろん公式はあります。
PE ローダーの動作を逆にするだけです。

  1. ファイル内で PE セクションが始まる場所を見つけます。
    これらの数値は、ファイル オフセットと呼ばれます。
  2. ベース アドレスを基準にして、PE セクションをメモリにロードする必要がある場所を特定します。
    これらのアドレスは RVA (相対仮想アドレス) と呼ばれます。
  3. 使用可能なベース アドレスを1つ選択し、RVA に追加します。
    これらのアドレスは VA (仮想アドレス) と呼ばれ、ファイル オフセットの最終アドレスです。

以下の手順を理解するために、すべての PE セクションには特に次のプロパティがあることに注意してください。

  • ファイル内でセクションが開始する開始ファイル オフセット。
  • ファイル内の長さ。
  • メモリ内でセ​​クションをロードする開始メモリ アドレス (ベース アドレスを基準とする)
  • 一度メモリにロードされた長さ (これはファイルの長さとは異なる場合があります)。

したがって、特定のメモリアドレス X に対して、次のことを行う必要があります。

  1. ベース アドレスを引きます。従来の Windows プログラムの場合、これは多くの場合 40 0000h です。
  2. これで RVA ができました。開始メモリ アドレスが RVA より下にあり、終了メモリ アドレスが2の後にある最初の PE セクションを見つけます。
  3. セクション開始メモリ アドレスを差し引くと、セクション オフセットが得られます。
  4. セクション開始ファイル オフセットを追加すると、ファイル オフセットが作成されます。

これを行うことができるPEEditor 1.7というツールがあります。
なんらかの理由で今は見つけるのが難しくなっていますが、インターネット上にはまだあるはずです。覚えておいてください:無料です。


Found PE editor:ここでは、パスワード tuts4you を使用して RAR アーカイブを解凍します。

(ウィンドウにドラッグするか、[参照] ボタンを使用して) ファイルを読み込み、FLC (File Location Calculator) をクリックします。新しいウィンドウで、アドレスを入力します。


1ほとんどの場合、これは実際には、ページングのおかげで、PE ヘッダーに設定されたベース アドレスが使用されることを意味します。
2メモリ開始アドレス+メモリ長-1として計算

于 2015-12-05T08:49:00.137 に答える