提问人:user7610 提问时间:5/22/2023 更新时间:5/22/2023 访问量:43
如何帮助 GDB 反汇编器视图在说明上正确同步?
How do I help GDB disassembler view to synchronize correctly on the instructions?
问:
我正在拆解以下 Python 程序的内存。反汇编应该以 instruction 或 开头,但 GDB(通过 clion 或 qt develop 运行)看不到它,而是显示某种指令,该指令是通过用它解码前一个字节而产生的,即 .int 3
0xcc
add
0x00 0xcc
我知道 x86 程序集不是自同步的(如果“objdump -d --start-address”从 x86 指令的中间开始打印会发生什么?
如何帮助 GDB 正确同步?
import ctypes
import mmap
buf = mmap.mmap(-1, mmap.PAGESIZE, prot=mmap.PROT_READ | mmap.PROT_WRITE | mmap.PROT_EXEC)
buf.write(
b'\xcc' # int 3
b'\x8b\xc7' # mov eax, edi
b'\x83\xc0\x01' # add eax, 1
b'\xc3' # ret
)
f_type = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int)
f_pointer = ctypes.c_void_p.from_buffer(buf)
f = f_type(ctypes.addressof(f_pointer))
result = f(42)
print(f"{result=}")
del f_pointer
buf.close()
答: 暂无答案
评论
37-interpreter-exec console "disassemble /rs 0x7ff5ddc4ffed,0x7ff5ddc50065"
buf.tell()
buf.write
f_pointer
f
buf.write
int 3
0x7ff5ddc50000
int 3