私はollydbとチートエンジンを使用してC++プログラムを修正しようとしています。アセンブリ内の値を変更してexeに保存
メモリアドレスを削除して番号0(または同じ結果で終わるもの)に置き換えたいとします。
01411E38 |. 8BD0 MOV EDX,EAX
01411E3A 83F2 00 XOR EDX,00000000
01411E3D 90 NOP
01411E3E 90 NOP
01411E3F 90 NOP
01411E40 |. 8995 B8FCFFFF MOV DWORD PTR SS:[EBP-348],EDX
:
CPU DISASM
に変更01411E38 |. 8BD0 MOV EDX,EAX
01411E3A 3315 0020A701 XOR EDX,DWORD PTR DS:[1A72000]
01411E40 |. 8995 B8FCFFFF MOV DWORD PTR SS:[EBP-348],EDX
前:
私はここで0
と交換する必要があるコード内の4つのスポットがありますが、私の問題があります
セーブ/リロード時:
012私は変更を加えることが、私はexeファイルを保存し、再読み込みする場合は、修正アセンブリは/壊れ変更されたときに01111E38 . 8BD0 MOV EDX,EAX
01111E3A 83 DB 83
01111E3B F2 DB F2
01111E3C . 00906090 DD 90609000
01111E40 /. 8995 B8FCFFFF MOV DWORD PTR SS:[EBP-348],EDX
はなぜ
XOR EDX,DWORD PTR DS:[1A72000]
XOR EDX,0
に仕事を変えるん。
バギーツール。とにかく、命令全体を「NOP」にペーストしてください。より良い質問は、ファイルに '90 90 90'の代わりに' 90 60 90 'を得た理由は? – Jester
これらのバイトを対象としたフィックスアップレコードが存在するためです。プログラムイメージはバイナリダンプではありません。彼らははるかに複雑です。パッチを当てたときの位置は01411E38でしたが、再ロードされたときの位置は01111E38でした。それは90の1つが60に変わった理由です。 –
@RaymondChen ha、素敵なもの! – Jester