Radar2 dan Frida lebih baik bersama

Plugin mandiri untuk radare2 yang mengirimkan frida dan memungkinkan untuk instrumen proses lokal atau jarak jauh menggunakan perintah R2 sebagai gantinya (tetapi tidak terbatas pada) skrip frida.
Proyek Radare menyediakan toolchain lengkap untuk rekayasa terbalik, dipelihara secara aktif dan memberikan fungsionalitas yang dikelola dengan baik dan memperluas fitur -fiturnya dengan bahasa dan alat pemrograman lainnya.
Frida adalah alat instrumentasi dinamis yang memudahkan untuk memeriksa dan memanipulasi proses berjalan dengan menyuntikkan javascript Anda sendiri, dan secara opsional juga berkomunikasi dengan skrip Anda.
:.:db APIr_fs API. Cara yang disarankan untuk menginstal R2frida adalah melalui R2pm:
$ r2pm -ci r2frida Bangun biner yang tidak memerlukan kompilasi akan segera didukung dalam r2pm dan r2env . Sementara itu jangan ragu untuk mengunduh bangunan terakhir dari halaman rilis.
Di GNU/Debian Anda perlu menginstal paket berikut:
$ 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 (bukan RACARE2-XYZ)preconfigure.bat )configure.bat dan kemudian make.bat Untuk pengujian, gunakan r2 frida://0 , karena melampirkan ke PID0 di Frida adalah sesi khusus yang berjalan di lokal. Sekarang Anda dapat menjalankan :? Perintah untuk mendapatkan daftar perintah yang tersedia.
$ 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 Anda dapat melampirkan, menelurkan atau meluncurkan ke program apa pun dengan nama atau PID, baris berikut akan melampirkan ke proses pertama bernama rax2 (jalankan rax2 - di terminal lain untuk menguji baris ini)
$ r2 frida://rax2 # attach to the first process named `rax2`
$ r2 frida://1234 # attach to the given pidMenggunakan jalur absolut biner untuk menelurkan akan menelurkan proses:
$ r2 frida:///bin/ls
[0x00000000] > :dc # continue the execution of the target programJuga bekerja dengan argumen:
$ r2 frida:// " /bin/ls -al " Untuk aplikasi debugging iOS/Android USB, gunakan tindakan ini. Perhatikan bahwa spawn dapat diganti dengan launch atau attach , dan nama prosesnya dapat berupa bundleid atau 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 Ini adalah perintah yang paling sering, jadi Anda harus mempelajarinya dan sufiks dengan itu ? untuk mendapatkan bantuan sub -perintah.
: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
Plugin R2frida berjalan di sisi agen dan terdaftar dengan r2frida.pluginRegister API.
Lihat plugins/ direktori untuk beberapa skrip plugin contoh.
[ 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 :. Perintah berfungsi seperti R2 . perintah, tetapi berjalan di dalam agen.
:. a.js # run script which registers a plugin
:. # list plugins
:.-test # unload a plugin by name
:.. a.js # eternalize script (keeps running after detach) Jika Anda bersedia menginstal dan menggunakan R2frida secara asli di Android melalui Termux, ada beberapa peringatan dengan dependensi perpustakaan karena beberapa resolusi simbol. Cara membuat pekerjaan ini adalah dengan memperluas lingkungan LD_LIBRARY_PATH untuk menunjuk ke direktori sistem sebelum Termux Libdir.
$ LD_LIBRARY_PATH=/system/lib64:$LD_LIBRARY_PATH r2 frida://...
Pastikan Anda menggunakan versi modern R2 (lebih disukai rilis terakhir atau git).
Jalankan r2 -L | grep frida untuk memverifikasi apakah plugin dimuat, jika tidak ada yang dicetak menggunakan variabel lingkungan R2_DEBUG=1 untuk mendapatkan beberapa pesan debugging untuk mengetahui alasannya.
Jika Anda memiliki masalah menyusun R2Frida, Anda dapat menggunakan r2env atau mengambil rilis yang dibangun dari halaman Rilis GitHub, ingatlah bahwa hanya versi utama yang harus cocok, ini adalah R2-5.7.6 dapat memuat plugin apa pun yang dikompilasi pada versi apa pun antara 5.7.0 dan 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
+-------+
Plugin ini telah dikembangkan oleh pancake alias Sergi Alvarez (penulis RACARE2) untuk sekarang.
Saya ingin mengucapkan terima kasih kepada Ole André karena telah menulis dan memelihara Frida serta bersikap baik untuk memperbaiki bug secara proaktif dan mendiskusikan detail teknis tentang apa pun yang diperlukan untuk membuat persatuan ini bekerja. Pujian