Radare2 и Frida лучше вместе

Автономный плагин для Radare2, который отправляет FRIDA и позволяет предназначать локальные или удаленные процессы, используя сценарии R2 (но не ограничиваются) FRIDA.
Проект RADARE предоставляет полный инструмент для обратной инженерии, он активно поддерживается и обеспечивает ухоженные функции и расширяет свои функции на другие языки и инструменты программирования.
FRIDA - это динамический инструментарий инструментальных инструментов, который позволяет легко осматривать и манипулировать процессами бега, вводив свой собственный JavaScript, а также, необязательно, общаться со своими сценариями.
:. ).:db APIr_fs . Рекомендуемый способ установки R2Frida - через R2PM:
$ r2pm -ci r2frida Бинарные сборки, которые не требуют компиляции, скоро будут поддерживаться в r2pm и r2env . Тем временем не стесняйтесь скачать последние сборки со страницы релизов.
В GNU/Debian вам нужно будет установить следующие пакеты:
$ sudo apt install -y make gcc libzip-dev nodejs npm curl pkg-config git $ git clone https://github.com/nowsecure/r2frida.git
$ cd r2frida
$ make
$ make user-install
radare2 (вместо Radare2-Xyz)preconfigure.bat )configure.bat , а затем make.bat Для тестирования используйте r2 frida://0 , в качестве прикрепления к PID0 во Фриде - это специальная сессия, которая работает в местном уровне. Теперь вы можете запустить :? Команда, чтобы получить список команд.
$ r2 'frida://?'
r2 frida://[action]/[link]/[device]/[target]
* action = list | apps | attach | spawn | launch
* link = local | usb | remote host:port
* device = '' | host:port | device-id
* target = pid | appname | process-name | program-in-path | abspath
Local:
* frida://? # show this help
* frida:// # list local processes
* frida://0 # attach to frida-helper (no spawn needed)
* frida:///usr/local/bin/rax2 # abspath to spawn
* frida://rax2 # same as above, considering local/bin is in PATH
* frida://spawn/$(program) # spawn a new process in the current system
* frida://attach/(target) # attach to target PID in current host
USB:
* frida://list/usb// # list processes in the first usb device
* frida://apps/usb// # list apps in the first usb device
* frida://attach/usb//12345 # attach to given pid in the first usb device
* frida://spawn/usb//appname # spawn an app in the first resolved usb device
* frida://launch/usb//appname # spawn+resume an app in the first usb device
Remote:
* frida://attach/remote/10.0.0.3:9999/558 # attach to pid 558 on tcp remote frida-server
Environment: (Use the `%` command to change the environment at runtime)
R2FRIDA_SAFE_IO=0|1 # Workaround a Frida bug on Android/thumb
R2FRIDA_DEBUG=0|1 # Used to debug argument parsing behaviour
R2FRIDA_COMPILER_DISABLE=0|1 # Disable the new frida typescript compiler (`:. foo.ts`)
R2FRIDA_AGENT_SCRIPT=[file] # path to file of the r2frida agent
$ r2 frida://0 # same as frida -p 0, connects to a local session Вы можете прикрепить, породить или запустить к любой программе по имени или PID, следующая строка будет прикрепить к первому процессу с именем rax2 (запустить rax2 - в другой терминале для проверки этой линии)
$ r2 frida://rax2 # attach to the first process named `rax2`
$ r2 frida://1234 # attach to the given pidИспользование абсолютного пути бинарного размога, вызовет процесс:
$ r2 frida:///bin/ls
[0x00000000] > :dc # continue the execution of the target programТакже работает с аргументами:
$ r2 frida:// " /bin/ls -al " Для USB отладки приложения iOS/Android используйте эти действия. Обратите внимание, что spawn может быть заменен launch или attach , а имя процесса может быть Bundleid или PID.
$ r2 frida://spawn/usb/ # enumerate devices
$ r2 frida://spawn/usb// # enumerate apps in the first iOS device
$ r2 frida://spawn/usb//Weather # Run the weather app Это самые частые команды, так что вы должны изучить их и суффикс ? Чтобы получить подкоманду помощи.
:i # get information of the target (pid, name, home, arch, bits, ..)
.:i* # import the target process details into local r2
:? # show all the available commands
:dm # list maps. Use ':dm|head' and seek to the program base address
:iE # list the exports of the current binary (seek)
:dt fread # trace the 'fread' function
:dt-* # delete all traces
Плагины R2frida работают на стороне агента и зарегистрированы в API r2frida.pluginRegister .
См. plugins/ каталог для еще более примеров сценариев плагинов.
[ 0x00000000 ] > cat example . js
r2frida . pluginRegister ( 'test' , function ( name ) {
if ( name === 'test' ) {
return function ( args ) {
console . log ( 'Hello Args From r2frida plugin' , args ) ;
return 'Things Happen' ;
}
}
} ) ;
[ 0x00000000 ] > : . example . js # load the plugin script The :. Команда работает как R2 . Команда, но работает внутри агента.
:. a.js # run script which registers a plugin
:. # list plugins
:.-test # unload a plugin by name
:.. a.js # eternalize script (keeps running after detach) Если вы готовы установить и использовать R2frida на Android через Termux, есть некоторые предостережения с зависимостями библиотеки из -за некоторых разрешений символов. Способ сделать эту работу - расширение среды LD_LIBRARY_PATH , чтобы указывать на системный каталог перед Termux Libdir.
$ LD_LIBRARY_PATH=/system/lib64:$LD_LIBRARY_PATH r2 frida://...
Убедитесь, что вы используете современную версию R2 (достойный последний релиз или GIT).
Запустить r2 -L | grep frida , чтобы проверить, загружается ли плагин, если ничего не напечатано, используйте переменную среды R2_DEBUG=1 чтобы получить некоторые сообщения отладки, чтобы узнать причину.
Если у вас есть проблемы с компиляцией R2frida, вы можете использовать r2env или выбрать, что выпуск создает со страницы Github Releses, помните, что только Major.minor Version должен соответствовать, это R2-5.7.6 может загрузить любой плагин, скомпилированный в любую версию между 5.7.0 и 5.7.8.
+---------+
| radare2 | The radare2 tool, on top of the rest
+---------+
:
+----------+
| io_frida | r2frida io plugin
+----------+
:
+---------+
| frida | Frida host APIs and logic to interact with target
+---------+
:
+-------+
| app | Target process instrumented by Frida with Javascript
+-------+
Этот плагин был разработан Pancake Aka Sergi Alvarez (автор Radare2) для NowSecure.
Я хотел бы поблагодарить Оле Андре за написание и поддержание Фриды, а также быть настолько любезной, чтобы активно исправлять ошибки и обсудить технические данные о чем угодно, необходимое для того, чтобы этот профсоюз работал. Престижность