小精灵五个
该措施包括两个关于从内存中倾倒和固定ARM ELF32/ELF64的效果。
- 倾倒
- 在Android上运行,可以从过程内存中倾倒精灵并修复它,重建部分标题以进行更好的IDA分析。
- Sofix
- 在PC上运行,可以修复从内存中倾倒的精灵文件,并重建部分标题以进行更好的IDA分析。
主要的目标是通过倾倒内存重建小精灵的截面标题。用upx或360 libjiagu.so之类的文件打破包装。
建造
倾倒
- 输出路径是应用程序/libs/armeabi-v7a/dump
Sofix
- 在Linux/Mac上,确保安装了Clang/GCC,只需运行./build-fix.sh
- 在Windows上,它可以在MingW中构建,但未进行测试。
霍顿
- Sofix
- params <src_so_path> <base_addr_in_memory_in_hex> <out_so_path>
- <src_so_path>从内存中倾倒的精灵文件。
- <base_addr_in_memory_in_hex>从内存中倾倒的精灵文件的内存基库,如果您不知道,请通过0
- <out_so_path>输出文件
- 例子
- ./ sofix dumped.so 0x6f5a4000 b.so
- 倾倒
- 这是在Android手机上运行的
- 确保手机可以访问根。
- 将其推入/数据/local/tmp,然后将其推送 +x
- ADB PUSH APP/LIBS/ARMEABI-V7A/DEMP/DATA/local/tmp/&& ADB Shell CHMOD 777/data/local/tmp/dump/dump/dump
- 使用ADB Shell输入您的手机,然后通过SU命令切换到root用户。
- params <base_hex> <End_hex> [is-stop-process-be be-be-be defump]
- 您要转储的过程ID
- <base_hex>您要在过程内存中倾倒精灵的开始地址,您可以通过
cat /proc/<pid>/maps获得此地址 - <End_hex>您要在过程内存中倾倒精灵的结束地址,您可以通过
cat /proc/<pid>/maps获得此地址 - 手机中的固定小精灵输出路径。
- [是停滞的过程中,即使在dump之前] 0/1在做转储作业之前应将Sigal发送到该过程,在某些反转储应用程序中很有用。如果您的目标过程中没有反倾销,则0可以
- [IS-FIX-SO-SO-so-perter-Dump] 0/1应该进行修复作业和截面标题重建,如果您传递,它将尝试在转储后修复小精灵。
- 例子
- 如果您想倾倒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内存(如果存在)也应该转储,则修复过程取决于它。
比较无固定和固定精灵

