Эльф-Дамп-Фикс
Этот RESP включает в себя два утилита о сбросе и исправлении ARM ELF32/ELF64 из памяти.
- свалка
- Запустить на Android, может выбросить ELF из памяти процесса и исправить его, восстановить заголовок секции для лучшего анализа IDA.
- Софикс
- Запустите на ПК, можно исправить файл ELF, сбрасываемый из памяти, и восстановить заголовок секции для лучшего анализа IDA.
Основная цель - восстановить заголовок секции эльфа за память сброшен.
Строить
свалка
- выходной путь-это приложение/libs/armeabi-v7a/damp
Софикс
- На Linux/Mac убедитесь, что Clang/GCC установлен, просто запустите ./build-fix.sh
- В Windows он может быть встроен в Mingw, но не протестирован.
За это
- Софикс
- Params <src_so_path> <base_addr_in_memory_in_hex> <out_so_path>
- <src_so_path> файл ELF, выброшенный из памяти. (Вы можете использовать DD или отладчик от отладчика IDA.
- <base_addr_in_memory_in_hex> База памяти для файла ELF, сброшенного из памяти, если вы не знаете, проход 0 - это нормально
- <Out_so_path> выходной файл
- пример
- ./sofix сброшен. So 0x6f5a4000 b.so
- свалка
- Это запускается на телефоне Android
- Убедитесь, что у вашего телефона есть корневой доступ.
- Нажмите на/data/local/tmp и дайте +x, как это
- ADB push app/libs/armeabi-v7a/dump/data/local/tmp/&& adb shell chmod 777/data/local/tmp/дамп
- Используйте оболочку ADB, чтобы ввести свой телефон и переключиться на root user по команде SU.
- Params <base_hex> <dond_hex> [is-stop-process-before-dump] [is-fix-so-after-dump]
- идентификатор процесса, который вы хотите сбросить
- <base_hex> начальный адрес эльфа, который вы хотите сбросить в памяти процесса, вы можете получить это от
cat /proc/<pid>/maps - <end_hex> конечный адрес эльфа, который вы хотите сбросить в памяти процесса, вы можете получить это от
cat /proc/<pid>/maps - Постоянный выход эльфа в вашем телефоне.
- [IS-STOP-Process-Before-DUMP] 0/1 должен отправить Sigal в процесс перед выполнением работы с дампом, полезно в некотором приложении против Dilming. Если в вашем целевом процессе нет анти -дистанции, 0 в порядке
- [IS-FIX-SO-AFTER-DUMP] 0/1 должен выполнить ремонт задания и заголовка раздела, если вы пройдете дальше, он попытается исправить эльф после дампы.
- пример
- Если вы хотите сбросить libc.so и your/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, если существует, также должна быть сброшена, процесс исправления зависит от этого.
Сравните между без фиксации и фиксированного эльфа

