Elf-Dump-Fix
Dieser BESSPT beinhaltet zwei Utils über das Dumping und das Fixieren von Arm ELF32/ELF64 aus dem Speicher.
- entsorgen
- Laufen Sie auf Android, können Sie Elf aus einem Prozessspeicher abwerfen und beheben, den Abschnitt -Header für eine bessere IDA -Analyse wieder aufbauen.
- Sofix
- Laufen Sie auf dem PC, können Sie eine ELF -Datei beheben, die aus dem Speicher abgeladen ist, und den Abschnitt -Header für eine bessere IDA -Analyse wieder aufbauen.
Das Hauptziel ist es, den Abschnittsübergang eines Elf durch Speicher umzubauen.
Bauen
entsorgen
- Ausgangspfad ist App/libs/armeabi-v7a/Dump
Sofix
- Stellen Sie unter Linux/Mac sicher, dass Clang/GCC installiert ist, einfach ausführen ./build-fix.sh
- Unter Windows kann es in Mingw eingebaut werden, aber nicht getestet werden.
Howtouse
- Sofix
- Params <src_so_path> <base_addr_in_memory_in_hex> <out_so_path>
- <src_so_path> Die aus dem Speicher abgelassene Elf -Datei. (Sie können DD oder IDA -Debugger verwenden, um eine ELF -Datei aus dem Android -Prozess abzugeben.)
- <basis_addr_in_memory_in_hex> Die Speicherbasis für die aus dem Speicher abgelassene Elf -Datei, wenn Sie nicht wissen, ist bestanden 0 ist in Ordnung
- <out_so_path> Die Ausgabedatei
- Beispiel
- ./Sofix DUPPED.so 0x6f5a4000 B.So
- entsorgen
- Dies wird auf Android -Telefon ausgeführt
- Stellen Sie sicher, dass Ihr Telefon einen Root -Zugriff hat.
- Drücken
- ADB Push App/libs/armeabi-v7a/Dump/data/local/tmp/&& adb Shell chmod 777/data/local/tmp/Dump
- Verwenden Sie ADB Shell, um Ihr Telefon einzugeben, und wechseln Sie zum Befehl "Root User By SU".
- Params <Base_hex> <end_hex> [IS-Stop-Prozess-Before-Dump] [is-fix-so-after-dump]
- Die Prozess -ID, die Sie abwerfen möchten
- <basis_hex> Die Startadresse von ELF, die Sie in den Prozessspeicher ablegen möchten, können Sie diese per
cat /proc/<pid>/maps erhalten - <end_hex> Die Endadresse von ELF, die Sie in den Prozessspeicher ablegen möchten, können Sie dies per
cat /proc/<pid>/maps erhalten - Der feste Elf -Ausgangspfad in Ihrem Telefon.
- [IS-Stop-Process-Befor-Dump] 0/1 sollte Sigal an den Prozess senden, bevor er Dump-Job macht, nützlich in einer Anti-Dumping-App. Wenn Ihr Zielprozess kein Anti -Dumping gibt, ist 0 in Ordnung
- [Is-fix-so-after-dump] 0/1 sollte den Wiederaufbau des Fixjob- und Abschnitts-Headers erledigen. Wenn Sie weitergeben, wird versucht, den Elf nach dem Dump zu reparieren.
- Beispiel
- Wenn Sie libc.so und Ihre/proc/[pID]/Karten wie diese abwerfen möchten
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 auf 40160000 nicht 40152000 liegt daran, dass der Elf .BSS -Speicher, falls existiert, auch entleert werden, der Fixprozess hängt davon ab.
Vergleichen Sie zwischen No-Fix und Fixelf

