1

GDBを使用していて、iOSアプリを変更したいと思います。(例:ゲームのスコアを変更する)

したがって、ブレークポイントを設定します。たとえば、次のようになります。

b *0x0032c870

ブレークポイントに次のように入力します

info r

この後、gdbは

r0             0x92717c0    153556928
r1             0x7d47a0 8210336
r2             0x0  0

そして今、私が必要としているのはr2を1に変更することです。

set $r2=1

これで、ゲーム内で値が変わります。

OK、質問があります。毎回gdbを使用する代わりに、hexeditorで編集してr2 = 1に設定するにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

1

毎回gdbを使用する代わりにr2=1を設定するようにhexeditorで編集するにはどうすればよいですか?

できません:の値r2レジスタの値です; プログラムが実行されるまで存在しません。

あなたがする必要があるのは、その値がレジスターのどこにロードされたかを把握し、そこで1コードを変更して、の代わりにロードするようにすることです0

これは、その値がどのようにロードされるかに応じて、非常に簡単またはトリッキーになる可能性があります。定数としてロードされる場合は簡単です(別の定数をロードするように命令を変更するだけです)。ただし、関数からの戻り値として読み込まれる可能性があります。その場合、別の値を返すようにその関数を変更する必要があります。

于 2012-11-17T15:26:49.240 に答える