곰대생/Android

Android GDB 설치 및 실행 방법 (Mac OS)

summer.west 2020. 12. 8. 20:31

 

GDB는 GNU에서 제공하는 Debugger다.
Windows, Linux, Android, iOS 등 다양한 플랫을 지원하는 디버깅 툴이라고 하는데,
사실 Android 안티 디버깅 테스트를 위해 간단히 설치와 실행 (+ 간단한 명령어) 정도만 사용해봤다.

멀고도 험한 보안의 길..


 

GDB 설치 방법

참고 링크 (https://www.hahwul.com/2015/09/03/android-android-gdb-build-arm-gdb-for/)

 

1. GDB 공식 홈페이지에서 최신버전(gdb-10.1.tar.xz) 을 다운로드하고, 압축을 해제한다.

 

Download GDB

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF. This page is maintained by the GDB developers. Copyright Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. Verb

www.gnu.org

2. 터미널을 실행하고, 압축 해제한 GDB 폴더로 이동한다.

$ cd gdb-10.1

​3. 다음 명령어를 차례로 실행한다.

$ ./configure -target=arm-linux --prefix=/usr/local/arm-dev -v
$ make

4. 안드로이드 단말기를 USB 디버깅 모드로 연결 후 gdb를 넣어준다.

adb push gdb /data/local

 

 

GDB 실행 방법

다양한 GDB 실행 방법이 있지만, (내 기준) 가장 간단한 방법인 디버깅할 앱의 PID를 구해서 PID로 GDB를 실행하는 방법이다.



1. 디버깅할 앱의 PID 구하기

$ adb shell
$ su
$ ps -ef | grep keyword // App Package에 포함된 keyword로 검색

2. PID로 GDB 실행하기

$ adb shell
$ cd /data/local
$ ./gdb -p PID

 

그리고 이 두 명령어를 합쳐버린 명령어

$adb shell "su -c '/data/local/gdb -q -p `adb shell pgrep -f keyword`'"

 

더보기

+)

사실 디버깅을 위한 GDB 명령어까지 알면 좋겠지만,
앞서 말했듯이 'GDB가 동작중인가 ?' 정도만 확인하는 안티디버깅 테스트를 위한 수준이었으므로
구동중인 스레드 정보를 확인하고, 종료하는 명령어 정도만 사용했다.

(gdb) info threads // 스레드 정보 확인
(gdb) q // 종료