IDA를 사용하면 dex와 so 파일들을 동적으로 분석할 수 있다.
동적 디버깅을 하기 위해서는 다음 글을 참고.
2020/03/10 - [Reversing/Android] - DEX 동적 디버깅하기 위한 조건
1. IDA Server 파일 실행
IDA로 동적 디버깅을 하기 위해서는 서버 프로그램을 모바일 기기에 넣어줘야 한다.
서버 프로그램(모바일 기기 안에서 동작함)과 클라이언트 프로그램(IDA)이 TCP 통신으로 정보를 주고받기 때문.
[IDA 설치 경로]/dbgsrv/ 폴더에 가보면 서버 프로그램들이 포함되어있다.
아키텍처는 adb shell 접속 후 명령어로 확인 가능
# getprop | grep 'cpu'
나는 armeabi-v7a이므로 android_server를 사용하면 된다.
> adb push android_server /data/local/tmp/
# cd /data/local/tmp/
# chmod 755 android_server
# ./android_server
android_server을 실행하면 23946 port가 열리고 클라이언트(IDA)가 Attach 하기를 기다리고 있다.
그다음 로컬 PC와 모바일 기기를 연결해주기 위해 포트 포워딩 설정을 해야 한다.
IDA로 23946 port로 Attach 했을 때 모바일 기기가 열어놓은 23946 port로 연결시켜주기 위함.
> adb forward tcp:23946 tcp:23946
2. IDA로 Attach!
adb shell am start -D -n [패키지명]/[메인액티비티 경로]를 입력하여 앱을 Debug mode로 실행시켜준다.
> adb shell am start -D -n com.example.nativetest/com.example.nativetest.MainActivity
Debugger Attach 대기 상태에서 IDA로 Attach를 해주면 MainActivity가 실행된다.
Hostname은 127.0.0.1로, Port는 23946으로 설정해주면 된다.
이 중 우리가 원하는 프로세스를 찾아서 Attach 해주면 된다.
ctrl + s 를 사용하여 Segment Table을 보고 우리가 분석하고 싶은 so 파일에 BP를 걸고 분석을 시작하면 된다.
'Android > Reversing' 카테고리의 다른 글
APK 파일 보호 기법(1) (0) | 2020.03.13 |
---|---|
arm 기반 ELF 파일 만들기 (0) | 2020.03.12 |
DEX 동적 디버깅하기 위한 조건 (0) | 2020.03.10 |
smali 코드 패치로 루팅 우회하기 (0) | 2020.03.10 |
DEX 정적 분석(2) - JEB3 (0) | 2020.03.10 |
WRITTEN BY