プログラムを変更する (3)
ぜんかい
この修正はうごかない(*´ω`*)
- (A)pushしているアドレス
- (B)call先のアドレス
(A)リロケーション
pushしているのは.rdataセクションのアドレスです。
しかしリロケーションされると実行アドレスが変わり、アドレスとして使えなくなります(下記)。
そのような箇所はrelocセクションにまとめて定義されます。
(A)へんこー
バイナリを直接いじります。フォーマットは下記のようです。
- hogeセクションのベースアドレス → 0x7000
- ブロックの大きさ → 4(ベースアドレス) + 4(サイズ) + 1箇所*2 + 2(パディング) = 0x000C
- pushの後ろにあるので、typeは3でオフセットは1 → 0x3001
relocセクションはうさみみで変更します。
リロケーションテーブルの大きさも変更します。
ついかされました
次回(4)へ続く