在 Ghidra 反汇编中查找 Ropper/ROPgadget 偏移

逆向工程 拆卸 部件 吉德拉 开发
2021-06-21 10:56:51

从 ROP gadget finder 返回的偏移量与它们来自的文件有何关系?例如,如果 ROP 小工具查找器说某个小工具在偏移0x0002ae74libuClibc.0.9.3.so,我应该去哪里寻找 中的小工具libuClibc.0.9.3.so

1个回答

ropper 以地址 0 为基础的二进制文件。这可以使用 -I 标志进行更改。这个基础值可以从 Ghidra 中获取以反映在 ropper 的输出中

在 Ghidra 中,转到窗口 > 内存映射。 在此处输入图片说明

在这种情况下,libc 加载到基地址 0x100000。从绳索

$ ropper -I 0x100000 --nocolor --file ./libc.so.6

现在输出可以直接与 G 一起使用以转到该地址。

0x0000000000197853: pop r13; pop r14; jmp rax;

此外,如果由于某种原因您无法再次运行 ropper,您可以使用旧输出尝试此操作。

0x0000000000097853: pop r13; pop r14; jmp rax; 

将基址添加到此地址

hex(0x100000+0x0000000000097853)
0x197853

按G并粘贴上面的地址

        00197848 48 83 c4 10     ADD        RSP,0x10
        0019784c 4c 89 ee        MOV        RSI,R13
        0019784f 5b              POP        RBX
        00197850 5d              POP        RBP
        00197851 41 5c           POP        R12
        00197853 41 5d           POP        R13
        00197855 41 5e           POP        R14
        00197857 ff e0           JMP        RAX

需要注意的一件事是,ropper 可以从 ghidra 不知道作为指令边界的地址生成 rop gadget。例如

018258c30000 add dword ptr[edx+0xc358], eax

可以被 ropper 用作

58c3 pop eax; ret

因为58c3仍然是一对有效的指令