0

(私はDebian 7、arm64を使用しています)

vmware-networks がログをダンプする代わりに出力するように強制するために、ログ機能を変更したいと考えています。私の Windows マシンで IDA を使用していたところ、.text:0000000000068900 jz loc_689A4.

を実行するgdb /usr/bin/vmware-networksと、次の指示が表示されます。

(gdb) x 0x68900
0x68900:        0x009e840f
(gdb) x/i 0x68900
0x68900:     je     0x689a4

しかし、ブレークポイントを試みると、

(gdb) break *0x68900
Breakpoint 1 at 0x68900
(gdb) run --start
Starting program: /usr/bin/vmware-networks --start
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0x68900: Input/output error.

「実行」する前に命令をホットワイヤしようとすると、(gdb) set *0x68900= 0x009e850f Cannot access memory at address 0x68900 が発生します

それはなぜですか、どうすれば修正できますか? はい、ルートで実行しているので、(通常は) 問題はありません。

4

1 に答える 1

0

問題は、このバイナリが再配置可能であることです。break mainに続くrunと、古いmain場所と再配置された場所の両方が表示されます。

(gdb) break main
Breakpoint 1 at 0x1e990
(gdb) run --start
Starting program: /usr/bin/vmware-networks --start
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, 0x00007ffff7f1a990 in main ()

=>ほら、0x7FFFF7EFC000の再配置オフセットがあります。これを「古い」オフセットに追加すると、検査、編集などのために再配置されたものになります。

(gdb) x/i 0x7FFFF7F64900
0x7ffff7f64900:      je     0x7ffff7f649a4

必要に応じて、適切なオフセットが得られるように、IDA 内のバイナリ全体を再配置します。

于 2013-01-01T18:08:06.550 に答える