قزم التفريغ
يشمل هذا الاستعداد اثنين من uTils حول إلقاء وتثبيت ARM ELF32/ELF64 من الذاكرة.
- أحمق
- قم بتشغيل Android ، ويمكن إلقاء قزم من ذاكرة العملية وإصلاحها ، وإعادة بناء رأس القسم لتحليل أفضل IDA.
- صوفيكس
- قم بتشغيل الكمبيوتر الشخصي ، ويمكنه إصلاح ملف قزم ملقاة من الذاكرة وإعادة بناء رأس القسم لتحليل أفضل IDA.
الهدف الرئيسي هو إعادة بناء رأس القسم من قزم عن طريق الذاكرة الملقاة. معتاد في كسر ملف مثل UPX أو شيء مثل 360 libjiagu.so
يبني
أحمق
- مسار الإخراج هو التطبيق/libs/armeabi-v7a/dump
صوفيكس
- على Linux/Mac ، تأكد من تثبيت Clang/GCC ، فقط تشغيل ./build-fix.sh
- على Windows ، يمكن بناؤه في Mingw ، ولكن لم يتم اختباره.
Howtouse
- صوفيكس
- params <src_so_path> <base_addr_in_memory_in_hex> <out_so_path>
- <src_so_path> ملف ELF مغلق من الذاكرة. (يمكنك استخدام DD أو IDA Debugger إلقاء ملف elf من عملية Android)
- <base_addr_in_memory_in_hex> قاعدة الذاكرة لملف قزم مغلق من الذاكرة ، إذا كنت لا تعرف ، فالمرور 0 على ما يرام
- <out_so_path> ملف الإخراج
- مثال
- ./Sofix Dumped.so 0x6f5a4000 B.So
- أحمق
- يتم تشغيل هذا على هاتف Android
- تأكد من أن هاتفك لديه وصول الجذر.
- ادفعه على/البيانات/المحلية/TMP و Grant +X مثل هذا
- ADB Push App/libs/armeabi-v7a/dump/data/local/tmp/&& adb shell chmod 777/data/tmp/dump
- استخدم ADB Shell لإدخال هاتفك وتبديله إلى أمر الجذر بواسطة SU.
- params <base_hex> <End_Hex> [is-stop-process-before dump] [is-fix-so-efter dump]
- معرف العملية الذي تريد تفريغه
- <Pase_Hex> عنوان بدء ELF الذي تريد تفريغه في ذاكرة العملية ، يمكنك الحصول على هذا بواسطة
cat /proc/<pid>/maps - <End_Hex> العنوان النهائي لـ Elf الذي تريد تفريغه في ذاكرة العملية ، يمكنك الحصول على هذا بواسطة
cat /proc/<pid>/maps - مسار إخراج قزم ثابت في هاتفك.
- [is-stop-process-before dump] 0/1 يجب أن يرسل سيجال إلى العملية قبل القيام بعمل تفريغ ، مفيد في بعض تطبيقات الإغراق المضادة. إذا لم يكن هناك مكافحة الإغراق على عملية المستهدف ، فإن 0 على ما يرام
- [is-fix-so-efter dump] 0/1 يجب أن تقوم بمهمة الإصلاح والقسمة لإعادة بناء رأس القسم ، إذا قمت بتمريرها ، فسيحاول إصلاح ELF بعد التفريغ.
- مثال
- إذا كنت ترغب في تفريغ libc.so ، و/proc/[pid]/خرائط مثل هذا
40105000-4014c000 r-xp 00000000 b3:19 717 /system/lib/libc.so
4014c000-4014d000 ---p 00000000 00:00 0
4014d000-4014f000 r--p 00047000 b3:19 717 /system/lib/libc.so
4014f000-40152000 rw-p 00049000 b3:19 717 /system/lib/libc.so
40152000-40160000 rw-p 00000000 00:00 0
- ./dump 1148 0x40105000 0x40160000 ./out.so 0 1
- تفريغ إلى 40160000 لا 40152000 هو أن ذاكرة elf .BSS إذا كان موجودًا يجب أن تكون تفريغًا أيضًا ، تعتمد عملية الإصلاح عليها.
قارن بين عدم الإصلاح والإدراك الثابت

