![]()
IDA(Interactive DisAssembler)는 가장 널리 사용되는 리버스 엔지니어링 도구 중 하나인데요.
다양한 플랫폼(Windwos/MacOS/iOS/AOS, etc.)에서 실행되는 바이너리 파일 분석이 용이하기 때문에 많은 분들이 애용하고 있습니다.
오늘은 IDA를 이용한 원격 디버깅 방법에 대해서 알아보겠습니다.
ANDROID REMOTE DEBUGGING (with IDA)
1. CHECK COMPATIBLE DEBUGGER SERVER
IDA를 사용하여 안드로이드 애플리케이션을 동적 디버깅하기 위해서는 단말기에서 IDA Debugger Server 를 실행해줘야 하는데요.
디버거 서버는 IDA 설치 경로의 .../dbgsrv 폴더에서 확인할 수 있습니다.
디버거 서버는 안드로이드 기기의 운영체제를 확인하여 알맞은 디버거 서버를 사용하면 됩니다.
# arm64-v8a => 64비트 ARM (ARMv8) => android_server
# armeabi-v7a => 32비트 ARM (ARMv7) => andorid_server64
C:\>adb shell getprop ro.product.cpu.abi
arm64-v8a
2. (PRESET) DEBUGGER SERVER
# (PC -> Android) push ida remote debugger server file (android_server64)
C:\>adb push ./android_server64 /data/local/tmp
# (Android) Execute android_server64 binary
c1q:/data/local/tmp # ./android_server64 &
[1] 2995
c1q:/data/local/tmp # IDA Android 64-bit remote debug server(ST) v7.5.26. Hex-Rays (c) 2004-2020
Listening on 0.0.0.0:23946...
# (PC <-> Android) Port Forwarding
C:\>adb forward tcp:23946 tcp:23946
239463. IDA - ATTACH TO PROCESS
3-1. DEBUGGER → SELECT DEBUGGER…

3-2. SELECT “Remote ARM Linux/Android debugger”

3-3. DEBUGGER > PROCESS OPTIONS > HOSTNAME (127.0.0.1 || wlan0 ip)

3-4. DEBUGGER > ATTACH TO PROCESS > SELECT PROCESS

3-5. COMPLETE

위 과정을 통해 안드로이드에서 실행중인 애플리케이션에 원격 디버깅을 성공하였습니다.
BP 설정을 통한 원격 디버깅은 추후에 실습을 진행하며 업데이트 하겠습니다.