我想使用GDB在Linux上调试我的elf文件,并按照IDA中的反汇编进行操作,这可能吗?如果可以的话,我该如何重新设置IDA以使其与GDB匹配?

谢谢!

评论

为什么不直接在IDA中直接调试呢?

#1 楼

如果您尝试使elf变基,则可以执行info proc mappings。这将显示所有映射的地址。 (也可以通过执行cat /proc/<pid>/map来查看)

然后只需通过EDIT-> Segments-> Rebase程序重新设置IDA的基础,然后从单选按钮中选择Image Base

例如:

(gdb) info proc mappings 
process 12383
Mapped address spaces:
    Start Addr   End Addr       Size     Offset objfile
     0x8048000  0x8049000     0x1000          0      /home/user/my_elf
     0x8049000  0x804a000     0x1000          0      /home/user/my_elf
     0x804a000  0x804b000     0x1000     0x1000      /home/user/my_elf
    0xb7e73000 0xb7e74000     0x1000          0
    0xb7e74000 0xb7fbd000   0x149000          0     /lib/i386-linux-gnu/libc-2.13.so
    0xb7fbd000 0xb7fbe000     0x1000   0x149000     /lib/i386-linux-gnu/libc-2.13.so
    0xb7fbe000 0xb7fc0000     0x2000   0x149000     /lib/i386-linux-gnu/libc-2.13.so
    0xb7fc0000 0xb7fc1000     0x1000   0x14b000     /lib/i386-linux-gnu/libc-2.13.so
    0xb7fc1000 0xb7fc4000     0x3000          0
    0xb7fdf000 0xb7fe1000     0x2000          0
    0xb7fe1000 0xb7fe2000     0x1000          0           [vdso]
    0xb7fe2000 0xb7ffe000    0x1c000          0     /lib/i386-linux-gnu/ld-2.13.so
    0xb7ffe000 0xb7fff000     0x1000    0x1b000     /lib/i386-linux-gnu/ld-2.13.so
    0xb7fff000 0xb8000000     0x1000    0x1c000     /lib/i386-linux-gnu/ld-2.13.so
    0xbffdf000 0xc0000000    0x21000          0           [stack]


如果我要看IDA中的小精灵,我会使用0x8048000作为基数。如果我要查看libc-2.13.so,我将使用0xb7e74000。

希望有帮助。