
안드로이드 동적 디버깅 도구 대표적인 2가지에 대해서 사용법 정리를 하려고함
1. GDB
GDB는 프로세서 아키텍처만 잘 맞추면 어려운게 없다
GDB의 준비물
로컬에서 동작할 gdbserver
http://www.equation.com/servlet/equation.cmd?fa=gdb
Debugger, gdb, for Windows
GNU Debugger for Windows This web page provides 32-bit and 64-bit binaries of gdb for Windows for download. Equation Solution build the debugger from GNU gdb. It is a free software under General Public License. Distribution of GNU compilers
www.equation.com
단말기에서 동작할 gdbserver
https://chromium.googlesource.com/android_tools/+/2403/ndk/prebuilt?autodive=0
ndk/prebuilt - android_tools - Git at Google
chromium.googlesource.com
각각 단말기와 로컬의 아키텍처에 맞는 서버를 다운받으면 된다
안드로이드는 uname 명령어로 확인가능
로컬에서 gdbserver를 실행하면 아래와같이 실행된다.
안드로이드 서버는 단말기에 넣어준다
adb push gdbserver /data/local/tmp
adb shell로 들어가서 gdbserver에 실행 권한을 부여해주고 제대로 실행되는지 확인
디버깅도구로 붙을 앱을 실행 시키고 pid 확인
gdbserver 실행
./gdbserver :8888 --attach [PID]
다시 로컬로 돌아와서 gdbserver 실행
이 때 만약 에뮬레이터로 진행한다면 포트 포워딩을 한번 해줘야한다
target remote :8888
attach 완료
이후 gdb를 이용해서 원격으로 동적 디버깅이 가능하다
각 명령어나 상세 사용법은 다음에 정리하려고 한다.
2. IDA
ida는 서버하나만 넣어준 후 원격 디버깅이 가능
ida 설치 경로에 가서 dbgsrv 디렉터리를 보면 아래 사진과 같이 여러 서버 파일들이 있다
마찬가지로 아키텍처에 맞는 것을 단말기에 넣어준다
adb push android_x86_server /data/local/tmp
바로 실행권한을 주고 실행
ida에서 attach 시도
Debugger > Attach 메뉴에 들어가면 있다
단말기면 ARMLinux/Android
에뮬레이터면 Linux debugger 선택
사진을 찍다 발견했는데 ida에서도 GDB server로 디버깅이 가능한듯 보인다.
마찬가지로 에뮬레이터로 붙는다면 포트포워딩
adb forward tcp:23946 tcp:23946
단말기의 IP를 적어주고 attach 하면된다
현재 에뮬레이터라 로컬 IP 입력했다
정상 동작시 모습
끝
'모바일 > Android' 카테고리의 다른 글
[Android] 안드로이드 에뮬레이터(Nox/BlueStack/MeMu) Proxy 설정법 (3) | 2023.05.18 |
---|---|
[Android] 안드로이드 쉘에서 alias 영구적으로 설정하기 (0) | 2022.10.20 |
[Android] apk 재설치 시 중단되는 현상 (Keeps stopping) (0) | 2022.09.21 |
[Android] openssl을 통한 BurpSuite 및 Fiddler 인증서 설치 (6) | 2022.05.13 |