Как сделать дамп разборки функции с помощью r2pipe - PullRequest
1 голос
/ 28 марта 2019

Я собираюсь написать программное обеспечение, которое помещает двоичный файл в radare2, а затем выгружает подпрограммы, включая инструкции, адреса и двоичное представление инструкций, в текстовый файл.

Я работал с IDA Pro и IDAPython, но я также хочу воссоздать его для radare2. В конце текстовый файл должен выглядеть так:

0x0804ba0a      55             push ebp
0x0804ba0b      89e5           mov ebp, esp
0x0804ba0d      83ec18         sub esp, 0x18
0x0804ba10      83e4f0         and esp, 0xfffffff0
0x0804ba13      b800000000     mov eax, 0
0x0804ba18      29c4           sub esp, eax

К сожалению, источников в Интернете мало, и документация не совсем длинная. Я хотел бы дать вам больше для работы, но я как-то застрял здесь. Я разобрался, как разобрать функцию с помощью команды pdf, и, возможно, я мог бы использовать ее в Python таким образом, но, как я это сделал, main, точка входа и sym.main будут отсутствовать. Я хотел бы разобрать весь раздел .text или все функции в разделе .text:

import r2pipe

file = 'path_to_file'
r = r2pipe.open()

with open (file, 'w') as f:
    r.cmd('aaa')
    # disassemble all functions starting with fcn and write them
    # to the file
    f.write(r.cmd('pdf @@ fcn*'))
...