Radare2 und Frida besser zusammen

Selbst zusammenhängendes Plugin für Radare2, das Frida versendet und ermöglicht, lokale oder entfernte Prozesse mit R2-Befehlen zu instrumentieren, stattdessen (aber nicht beschränkt auf) Frida-Skripte.
Das Radare -Projekt bietet eine vollständige Toolchain für Reverse Engineering, die aktiv gepflegt ist und gut gepflegte Funktionen bereitstellt und seine Funktionen mit anderen Programmiersprachen und Tools erweitert.
Frida ist ein dynamisches Instrumentierungs -Toolkit, das es einfach macht, Laufprozesse zu inspizieren und zu manipulieren, indem Sie Ihr eigenes JavaScript injizieren und optional auch mit Ihren Skripten kommunizieren.
:. ):db -API: DB -APIr_fs -API Remote -Dateisysteme auf. Die empfohlene Möglichkeit zur Installation von R2FRIDA ist über R2PM:
$ r2pm -ci r2frida Binärbuilds, die keine Zusammenstellung erfordern, werden bald in r2pm und r2env unterstützt. In der Zwischenzeit können Sie die letzten Builds von der Seite "Releases" herunterladen.
In GNU/Debian müssen Sie die folgenden Pakete installieren:
$ 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 um (anstelle von Radare2-Xyz)preconfigure.bat )configure.bat aus und dann make.bat Verwenden Sie zum Testen r2 frida://0 , da das Anbringen an der PID0 in Frida eine Sondersitzung ist, die in lokaler Leitung läuft. Jetzt können Sie die :? Befehl, um die Liste der verfügbaren Befehle zu erhalten.
$ 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 Sie können mit Namen oder PID an ein beliebiges Programm anhängen, laichen oder starten. Die folgende Zeile wird an den ersten Vorgang mit dem Namen rax2 (RAR rax2 - in einem anderen Terminal angeschlossen, um diese Zeile zu testen).
$ r2 frida://rax2 # attach to the first process named `rax2`
$ r2 frida://1234 # attach to the given pidWenn Sie den absoluten Weg einer Binärdatei zum Laichen untersuchen, wird der Prozess hervorgerufen:
$ r2 frida:///bin/ls
[0x00000000] > :dc # continue the execution of the target programFunktioniert auch mit Argumenten:
$ r2 frida:// " /bin/ls -al " Für USB -Debugging iOS/Android -Apps verwenden diese Aktionen. Beachten Sie, dass spawn durch launch oder attach ersetzt werden kann und der Prozessname das Bundleid oder die PID sein kann.
$ 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 Dies sind die häufigsten Befehle, also müssen Sie sie lernen und mit ihm suffixen ? Um Unterbefehle zu bekommen, helfen Sie.
: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 -Plugins werden auf der Agentenseite ausgeführt und sind bei der r2frida.pluginRegister -API registriert.
Weitere Beispiel -Plugin -Skripte finden Sie im plugins/ Verzeichnis.
[ 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 Der :. Befehl funktioniert wie die R2 . Befehl, läuft aber im Agenten.
:. a.js # run script which registers a plugin
:. # list plugins
:.-test # unload a plugin by name
:.. a.js # eternalize script (keeps running after detach) Wenn Sie bereit sind, R2FRIDA nativ auf Android über Termux zu installieren und zu verwenden, gibt es aufgrund einiger Symbolauflösungen einige Vorbehalte mit den Bibliotheksabhängigkeiten. Die Möglichkeit, diese Arbeit zu erstellen, besteht darin, die Umgebung LD_LIBRARY_PATH zu erweitern, um auf das Systemverzeichnis vor dem Terux Libdir zu verweisen.
$ LD_LIBRARY_PATH=/system/lib64:$LD_LIBRARY_PATH r2 frida://...
Stellen Sie sicher, dass Sie eine moderne Version von R2 verwenden (bevorzugt Last Release oder Git).
Run r2 -L | grep frida , um zu überprüfen, ob das Plugin geladen ist. Wenn nichts gedruckt wird, verwenden Sie die Variable R2_DEBUG=1 Umgebungsvariable, um einige Debugging -Nachrichten zu erhalten, um den Grund zu ermitteln.
Wenn Sie Probleme haben, R2Frida zu erstellen, können Sie r2env verwenden oder die Release-Builds von der Seite GitHub Releases abrufen. Beachten Sie, dass nur Major.minor-Version übereinstimmen muss. Dies ist R2-5.7.6 kann ein Plugin laden, das auf einer beliebigen Version zwischen 5.7.0 und 5.7.8 zusammengestellt wurde.
+---------+
| 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
+-------+
Dieses Plugin wurde von Pancake alias Sergi Alvarez (Autor von Radare2) für NOWSecure entwickelt.
Ich möchte Ole André für das Schreiben und Aufrechterhalten von Frida danken und so freundlich sein, Fehler proaktiv zu reparieren und technische Details über alles zu diskutieren, was erforderlich ist, um diese Gewerkschaft zum Arbeiten zu machen. Lob