我编写了一个简单的程序来获取使用 ptrace 的进程指令。你可以在这里找到代码
我在 Ubuntu 64 位下编译并运行它。
我得到的是这样的:
EIP: 7f7e5edf5c75 Instruction executed: 8824848948f0394c
EIP: 7f7e5edf5c78 Instruction executed: 8824848948
EIP: 7f7e5edf5c80 Instruction executed: 84f6000000da840f
EIP: 7f7e5edf5c86 Instruction executed: 2000000b42484f6
...
...
EIP: 400dab Instruction executed: e8c78948ef458d48
EIP: 400daf Instruction executed: fffffe29e8c78948
EIP: 400db2 Instruction executed: 458d48fffffe29e8
EIP: 400be0 Instruction executed: d680020148225ff
...
...
EIP: 7f7e5ee012f0 Instruction executed: 2404894838ec8348
EIP: 7f7e5ee012f4 Instruction executed: 244c894824048948
...
...
当我使用gdb时,我只能看到EIP下的那些指令:400dab......我找不到那些在7f下......所以我猜它是错误的......
(gdb) x/20xg 0x0000000000400dab
0x400dab <main+135>: 0xe8c78948ef458d48 0xee458d48fffffe29
0x400dbb <main+151>: 0xfffffe4de8c78948 0x10c0834880458b48
0x400dcb <main+167>: 0x48ee558d48088b48 0x8948ce8948c0458d
谁能解释我的代码为什么错误以及如何只打印正确的 EIP 和说明?