小精靈五個
該措施包括兩個關於從內存中傾倒和固定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內存(如果存在)也應該轉儲,則修復過程取決於它。
比較無固定和固定精靈

