엘프 덤프 고정
여기에는 메모리에서 ARM ELF32/ELF64를 덤핑하고 고정하는 것에 대한 두 가지 유틸리티가 포함됩니다.
- 덤프
- Android에서 실행하고 프로세스 메모리에서 ELF를 덤프하여 수정하고 IDA 분석을 개선하려면 섹션 헤더를 재구성 할 수 있습니다.
- 소피스
- PC에서 실행하고 메모리에서 덤프 된 ELF 파일을 수정하고 IDA 분석을 개선 할 수 있도록 섹션 헤더를 재구성 할 수 있습니다.
주요 대상은 메모리 덤프에 의해 ELF의 섹션 헤더를 재건하는 것입니다.
짓다
덤프
- 출력 경로는 App/Libs/Armeabi-V7a/DUMP입니다
소피스
- Linux/Mac에서는 Clang/GCC가 설치되어 있는지 확인하고 ./build-fix.sh를 실행하십시오.
- Windows에서는 Mingw로 구축 할 수 있지만 테스트 할 수는 없습니다.
HowTouse
- 소피스
- 매개 변수 <src_so_path> <base_addr_in_memory_in_hex> <oun_so_path>
- <SRC_SO_PATH> 메모리에서 덤프 된 ELF 파일.
- <base_addr_in_memory_in_hex> 메모리에서 덤프 된 엘프 파일의 메모리베이스, 모르는 경우 Pass 0은 괜찮습니다.
- <out_so_path> 출력 파일입니다
- 예
- ./sofix tumped.so 0x6f5a4000 B.
- 덤프
- 이것은 안드로이드 폰에서 실행됩니다
- 휴대 전화에 루트 액세스 권한이 있는지 확인하십시오.
- /data/local/tmp에 밀어 넣고 이와 같이 +x를 푸시하십시오
- ADB 푸시 앱/libs/armeabi-v7a/dump/data/local/tmp/&& adb shell 777/data/local/tmp/dump
- ADB 쉘을 사용하여 전화를 입력하고 SU 명령으로 루트 사용자로 전환하십시오.
- 매개 변수 <ase_hex> <end_hex> [is-stop-process-before-dump] [isfix-so-after-dump]
- 덤프하려는 프로세스 ID
- <ase_hex> 프로세스 메모리에 덤프하려는 엘프의 시작 주소,
cat /proc/<pid>/maps 으로 이것을 얻을 수 있습니다. - <END_HEX> 프로세스 메모리에 덤프하려는 엘프의 종료 주소,
cat /proc/<pid>/maps 로이 점을 얻을 수 있습니다. - 휴대 전화의 고정 된 ELF 출력 경로.
- [IS- 스톱 프로세스-덤프] 0/1은 덤프 작업을 수행하기 전에 프로세스에 Sigal을 보내야합니다. 일부 덤핑 앱에 유용합니다. 대상 프로세스에 안티 덤핑이 없으면 0은 괜찮습니다.
- [IS-fix-so-after-dump] 0/1은 수정 작업 및 섹션 헤더 재건축을 수행해야합니다. 전달하면 덤프 후 엘프를 수정하려고합니다.
- 예
- libc.so를 덤프하고 싶다면/proc/[pid]/maps와 같은지도
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
- 40152000이 아닌 40160000으로 덤프하는 것은 ELF .BSS 메모리가 존재하는 경우에도 덤프해야하기 때문에 수정 프로세스는 이에 달려 있기 때문입니다.
픽스와 고정 된 ELF를 비교하십시오

