안드로이드 스튜디오(Android Studio)를 이용한 동적디버깅

1. 디버깅할 APP을 apktool로 디컴파일

2. 디컴파일한 폴더의 AndroidManifest.xml를 열고 <application> 태그 내에 android:debuggable="true" 옵션 추가 후 저장
ex) <application android:icon="@drawable/app_icon" android:debuggable="true" ...
** 일반적으로 앱스토어에서 다운받은 앱은 android:debuggalbe 속성이 존재하지 않거나 false로 처리되어있다.  
→ true인 경우, 앱스토어에 올릴 수 없음


3. 재컴파일 후 디바이스에 설치

4. 디버거 연결 대기 ON  :: 디바이스에서 설정 > 개발자 옵션 > USB 디버깅 ON > 디버깅할 앱 선택 > debuggable 옵션을 준 앱 선택 



6. 안드로이드 스튜디오에 설치한 뒤 재시작 :: File > Settings > Plugins > Install plugin from disk...


7. 안드로이드 스튜디오 실행 시 Open an existing Android Studio project를 클릭하여 디버깅할 앱의 smali 폴더를 지정하여 실행
* android studio를 켰을 때 좌측에 파일들이 보이지 않을 경우 상단의 Android라고 되어 있는 부분을 클릭하여 Project로 선택

8. Run > Edit Configurations > + > Remote 선택하여 나온 탭에서 Settings의 Port를 8700으로 변경 후 저장


9. [Help - Find Action] 클릭 후 monitor 검색 및 실행
* 만약 안켜질 경우 [SDK 설치 폴더 - tools - monitor.bat] 실행
ex) C:\Users\KJY\AppData\Local\Android\Sdk\tools 


10. 진단폰에서 디버깅할 APP 실행 시 디버거 대기 창이 뜨고 이 때 monitor에서 빨간색 디버깅모양이 뜨면 정상

11. 안드로이드 스튜디오 내에서 브레이크 포인트를 건 뒤 Shift+F9를 눌러 디버깅 



JEB2를 이용한 동적디버깅

    1. 위의 1~4과정 진행 혹은 dirtyC0w를 이용하여 디버깅 가능상태 만들기

    2. 디버깅할 앱의 패키지와 액티비티명 확인

    3. 현재 실행중인 애플리케이션 중에서 디버깅 플래그 값을 확일할 수 있게끔 명령어 실행

        adb shell am start -D -n [패키지 이름/액티비티]
                 
    -D : 디버깅 가능하도록 플래그 추가
                 -n : 네이티브 힙메모리 덤프



    4. JEB2에서 디버깅 시작 :: Debugger > Start (혹은 벌레모양 아이콘 클릭)


    5. 디버거에 디버깅할 앱 Attach
    ** 하단의 Suspend all threads 체크한다


    6. 필요한 곳에 break point를 설정하여 디버깅 진행 (Ctrl+b)


    JADX

    : 이전 포스팅에서 설명한 jd-gui와 동일하게 java 디컴파일러
        ** 하지만 jd-gui 보다 디컴파일 결과가 좋고, dex2jar를 사용하지 않고도 디컴파일이 가능하여 더 많이 사용

    다운로드 경로: https://github.com/skylot/jadx

    1) jadx-gui.jar 파일 실행 


    2) 디컴파일하고자 하는 apk 파일을 가져오면 디컴파일 끝!


    JEB2

    : java 디컴파일러

    JEB는 상용화툴이라 앞서 설명한 두개의 디컴파일러보다 조금 더 기능도 많고 디컴파일 결과가 젤 좋다. 
    다음에 설명할 동적 디버깅 또한 지원하는 툴로 모바일 애플리케이션 분석 시 가장 많이 사용하는 디컴파일러이다.

    (해당 경로에서는 Free trial만 제공한다)

    1) jeb.exe 실행



    2) 디컴파일하고자 하는 apk 파일을 가져오기 후 Bytecode 선택 (smali 코드 추출)


    3) 커서를 해당 페이지에 놓고 q를 눌러 디컴파일 끝~!




    + Recent posts