elfe-dump-fix
Ce RESS inclut deux utils sur le vidage et la fixation du bras ELF32 / ELF64 de la mémoire.
- décharge
- Exécuter sur Android, peut vider ELF à partir d'une mémoire de processus et le réparer, reconstruire l'en-tête de la section pour une meilleure analyse IDA.
- sofix
- Exécuter sur PC, peut corriger un fichier ELF vide à partir de la mémoire et reconstruire l'en-tête de la section pour une meilleure analyse IDA.
La cible principale est de reconstruire l'en-tête de la section d'un elfe par mémoire vidé.
Construire
décharge
- Le chemin de sortie est App / Libs / Armabi-V7a / Dump
sofix
- Sur Linux / Mac, assurez-vous que Clang / GCC est installé, il suffit d'exécuter ./build-fix.sh
- Sur Windows, il peut être construit dans Mingw, mais non testé.
Howtouse
- sofix
- params <src_so_path> <ase_addr_in_memory_in_hex> <utout_so_path>
- <src_so_path> Le fichier ELF a été vidé à partir de la mémoire. (Vous pouvez utiliser DD ou IDA Debugger vider un fichier ELF à partir du processus Android)
- <ase_addr_in_memory_in_hex> La base de mémoire pour le fichier elfe déversé à partir de la mémoire, si vous ne savez pas, passer 0 est ok
- <out_so_path> le fichier de sortie
- exemple
- ./sofix Dumped.SO 0x6f5a4000 B.SO
- décharge
- Ceci est exécuté sur le téléphone Android
- Assurez-vous que votre téléphone a un accès root.
- Poussez-le sur / data / local / tmp et Grant + x comme ça
- ADB push app / libs / armabi-v7a / vidage / data / local / tmp / && shell chmod 777 / data / local / tmp / vidage
- Utilisez le shell ADB pour saisir votre téléphone et passez à l'utilisateur racine par la commande su.
- params <base_hex> <end_hex> [IS-stop-process-before-dump] [is-fix-so-after-dump]
- L'ID de processus que vous souhaitez vider
- <base_hex> L'adresse de début de l'elfe que vous souhaitez vider dans la mémoire du processus, vous pouvez l'obtenir par
cat /proc/<pid>/maps - <end_hex> L'adresse finale de l'elfe que vous souhaitez vider dans la mémoire du processus, vous pouvez l'obtenir par
cat /proc/<pid>/maps - le chemin de sortie ELF fixe dans votre téléphone.
- [IS-STOP-Process-Before-Dump] 0/1 devrait envoyer Sigal au processus avant de faire du travail de vidage, utile dans une application anti-vidage. S'il n'y a pas de vidage anti-vidage sur votre processus cible, 0 est OK
- [IS-FIX-SO-AFTER-DUMP] 0/1 devrait faire la reconstruction du travail de correction et de la section, si vous passez, il essaiera de réparer l'elfe après le vidage.
- exemple
- Si vous souhaitez vider libc.so, et votre / proc / [pid] / cartes comme celle-ci
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
- Dump au 40160000 Pas 40152000 est dû au fait que la mémoire ELF .BSS s'il existe doit également être vide, le processus de correction en dépend.
Comparez entre l'ELF sans fixe et l'ELF fixe

