РАЗБОР Reverse Проблема

Как в radare2 найти путь от функции к функции?

xverizex
xverizex Newbie · 28 сообщений
Подписаться
4,1 тыс.
[ обложка статьи ]
Режим чтения
Не могу найти в документации информацию о такой возможности, но может знает кто-нибудь из вас. Возможно придется скрипт написать, но тем не менее, например я нахожусь в такой-то функции, 0x000001 и хочу узнать через какие функции можно дойти до функции 0x00010000. Это интересная задачка, думаю здесь надо от конца искать. Пока жду вашей помощи, попробую на python сделать скрипт и выложу его сюда, правда я в python не профи.
Полезно

Комментарии

1
Написал скрипт, только он учитывает один путь, но можно разработать такой скрипт, который будет искать по всем вхождениям, но мне сложновато размышлять как это сделать на python.

Python:
#!/usr/bin/env python3
import r2pipe
import sys

if (len (sys.argv) <= 3):
    print ("./script [app_name] [start_address in hex] [end_address in hex]")
    exit (0)

name_app = sys.argv[1]
start_offset = int (sys.argv[2], 16)
end_offset = int (sys.argv[3], 16)

r = r2pipe.open (name_app)
r.cmd ('aaaa')
r.cmd ('s ' + str(end_offset))

while True:
    func = r.cmd ('afo')
    func = func.strip ()
    cur_func = func
    print ('[' + str(func) + ']')
    array = r.cmd ('/r ' + str(func))
    func = array.split (' ')
    if (int(cur_func, 16) == start_offset):
        break
    r.cmd ('s ' + str(func[0]))