APK.SH هو برنامج نصي Bash الذي يجعل تطبيقات Android الهندسية العكسية أسهل ، مما يؤدي إلى أتمتة بعض المهام المتكررة مثل السحب وفك التشفير وإعادة البناء وتصحيح APK.
يستخدم APK.SH بشكل أساسي APKTOOL لتفكيك الموارد وفك تشفير وإعادة بناء وبعض BASH لأتمتة عملية حقن FRIDA. كما يدعم حزم التطبيق/تقسيم APKs.
⬅ سحب APK من الجهاز أمر بسيط مثل التشغيل ./apk.sh pull <package_name>
؟ فك تشفير APK بسيط مثل تشغيل ./apk.sh decode <apk_name>
؟ إعادة بناء APK بسيطة مثل الجري ./apk.sh build <apk_dir>
apk.sh pull سحب APK من جهاز. إنه يدعم حزم التطبيق/APKs المقسمة ، مما يعني أنه سيتم الانضمام إلى APKs المقسمة في APK واحد (وهذا مفيد للترقيع). إذا كانت الحزمة عبارة عن حزمة تطبيق APP/split ، فسيتم دمج APK.SH بين APKs في APK واحد ، مما يثبت جميع معرفات الموارد العامة.
apk.sh patch PATCH APK لتحميل FRIDA-GADGET.SO في البداية.
Frida-Gadget.so هي مكتبة مشتركة من Frida المقصود من قبل البرامج ليتم صكها (عندما لا يكون وضع التشغيل المحقوق مناسبًا). بمجرد تحميل المكتبة ، سيسمح لك بالتفاعل معها باستخدام أدوات FRIDA الحالية مثل Frida-Trace. كما أنه يدعم نهجًا مستقلًا تمامًا حيث يمكنه تشغيل البرامج النصية من نظام الملفات دون أي اتصال خارجي.
تصحيح APK بسيط مثل ./apk.sh patch <apk_name> --arch arm .
يمكنك تحديد تكوين أداة FRIDA في JSON ./apk.sh patch <apk_name> --arch arm --gadget-conf <config.json>
إذا واجهت أخطاء " apktool d " apktool كما في #30 ، فيمكنك تمرير علامة --only-main-classes ، والتي سيتم تمريرها إلى apktool عند فك تشفير APK الخاص بك.
في التفاعل الافتراضي ، تعرض Frida Gadget واجهة متوافقة مع خادم Frida ، تستمع إلى المضيف المحلي: 27042 بشكل افتراضي. من أجل تحقيق أجهزة مبكرة ، اترك وظيفة مُنشئ الأدوات حتى attach() العملية ، أو استئناف resume() بعد المرور عبر spawn() -> attach() -> ...apply instrumentation... خطوات.
إذا كنت لا تريد سلوك الحظر هذا وترغب في السماح للبرنامج بالتمهيد مباشرة ، أو تفضل الاستماع إلى واجهة أو منفذ مختلف ، يمكنك تخصيص هذا من خلال ملف تكوين JSON.
التكوين الافتراضي هو:
{
"interaction" : {
"type" : " listen " ,
"address" : " 127.0.0.1 " ,
"port" : 27042 ,
"on_port_conflict" : " fail " ,
"on_load" : " wait "
}
} يمكنك تمرير ملف تكوين الأداة إلى apk.sh مع خيار- --gadget-conf .
قد يكون التكوين المقترح عادة:
{
"interaction" : {
"type" : " script " ,
"path" : " /data/local/tmp/script.js " ,
"on_change" : " reload "
}
}يمكن أن يكون script.js مثل:
var android_log_write = new NativeFunction (
Module . getExportByName ( null , '__android_log_write' ) ,
'int' ,
[ 'int' , 'pointer' , 'pointer' ]
) ;
var tag = Memory . allocUtf8String ( "[frida-script][ax]" ) ;
var work = function ( ) {
setTimeout ( function ( ) {
android_log_write ( 3 , tag , Memory . allocUtf8String ( "ping @ " + Date . now ( ) ) ) ;
work ( ) ;
} , 1000 ) ;
}
work ( ) ;
android_log_write ( 3 , tag , Memory . allocUtf8String ( ">--(O.o)-<" ) ) ; adb push script.js /data/local/tmp
./apk.sh patch <apk_name> --arch arm --gadget-conf <config.json>
adb install file.gadget.apk
أضف الرمز التالي للطباعة إلى logcat console.log إخراج أي برنامج نصي من رموز Frida عند استخدام نوع تفاعل البرنامج النصي.
// print to logcat the console.log output
// see: https://github.com/frida/frida/issues/382
var android_log_write = new NativeFunction (
Module . getExportByName ( null , '__android_log_write' ) ,
'int' ,
[ 'int' , 'pointer' , 'pointer' ]
) ;
var tag = Memory . allocUtf8String ( "[frida-script][ax]" ) ;
console . log = function ( str ) {
android_log_write ( 3 , tag , Memory . allocUtf8String ( str ) ) ;
} apk.sh [SUBCOMMAND] [APK FILE|APK DIR|PKG NAME] [FLAGS]
apk.sh pull [PKG NAME] [FLAGS]
apk.sh decode [APK FILE] [FLAGS]
apk.sh build [APK DIR] [FLAGS]
apk.sh patch [APK FILE] [FLAGS]
apk.sh rename [APK FILE] [PKG NAME] [FLAGS]
pull Pull an apk from device/emulator.
decode Decode an apk.
build Re-build an apk.
patch Patch an apk.
rename Rename the apk package.
-a, --arch <arch> حدد البنية المستهدفة ، إلزامية عند الترقيع.
-g, --gadget-conf <json_file> حدد ملف تكوين FRIDA-GADGET ، اختياريًا عند التصحيح.
-n, --net إضافة تكوين أمان شبكة متساهلة عند الإنشاء ، اختياري. يمكن استخدامه مع التصحيح والسحب وإعادة تسمية أيضا.
-s, --safe لا فك تشفير الموارد عند فك التشفير (أي apktool -r). لا يمكن استخدامها عند الترقيع.
-d, --no-dis تفكيك DIS ، اختياريًا عند فك التشفير (أي apktool -s). لا يمكن استخدامها عند الترقيع.
https://frida.re/docs/gadget/
https://lief-project.github.io/doc/latest/tutorials/09_frida_lief.html
https://koz.io/using-frida-on-droid-without-root/
https://github.com/sensepost/objection/
https://github.com/nickstadb/patch-apk/
https://neo-geo2.gitbook.io/adventures-on-security/frida-scripting-guide/frida-scripting-guide