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 في Frida هو جلسة خاصة تعمل في المحلية. الآن يمكنك تشغيل :? أمر للحصول على قائمة الأوامر المتاحة.
$ 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 (RUN 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 ال :. يعمل الأمر مثل 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 ، ضع في اعتبارك أنه يجب أن يتطابق الإصدار الرئيسي فقط.
+---------+
| 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.
أود أن أشكر Ole André على الكتابة والحفاظ على Frida بالإضافة إلى أن أكون لطيفًا للغاية لإصلاح الأخطاء بشكل استباقي ومناقشة التفاصيل الفنية حول أي شيء مطلوب لجعل هذا الاتحاد يعمل. مجد