티스토리 뷰
1.
https://github.com/JesusFreke/smali/wiki/smalidea
위 링크에서 smalidea-0.05를 다운로드 받는다. ( 이후에 나오는 추가적인 버전을 사용해도 된다. )
2.
Android Studio 에서 File - Setup - Plugins - (톱니)Install Plugin from Disk... 를 선택하고 다운로드 받은 smalidea-0.05.zip 파일을 압축을 해제하지 않은상태로 선택한다.
정상적으로 Plugin이 설치되었으면 Android Studio 를 껐다가 다시 실행시킨다.
3.
Android Studio 의 File - Profile or Debug APK 를 선택한다.
이후 뜨는 탐색창에서 분석하고자하는 APK파일을 선택하면 자동으로 디컴파일이 되면서 Smali 코드가 뜬다.
4.
Run - Edit Configurations... 를 선택한 후, +버튼을 눌러 Remote를 생성한다. 이후 생성된 Configuration의 Port를 8700으로 수정한다.
5.
USB를 통해 기기를 연결하고 USB 디버그모드를 활성화한다.
또, 디버깅할 앱 선택에서 디버깅을 희망하는 App을 선택한다.
( AndroidManifest.xml에 android:debuggable="true"가 작성되어 있어야 해당 설정이 가능하다. )
6.
adb shell am start -D -n "[ 패키지명 ]/[ 액티비티명 ]" 명령어를 통해 해당 앱을 디버깅대기상태로 만든다.
7.
$Android_Root/SDK/Tools/moniter.bat 을 실행시킨다.
8.
위와같이 해당 Application이 디버깅 대기상태로 인식된다면 이제 Android Studio에서 BreakPoint를 걸어서 디버깅할 준비를 하고 디버그버튼을 눌러서 디버깅을 진행한다.
* 이후에는 F7, F8, F9를 통해서 디버깅을 진행할 수 있다.
* 추가적으로 뜨지않는 변수가 있다면 Watches 태그에 해당 변수 이름을 추가해서 관찰할 수 있다.
근데 이 동적 디버깅 방법은 프로그램흐름대로 진행하는 과정에서 변수에 어떤 것이 들어가는지, 또 어떤 부분에서 우회해야되는지 파악하는 용도 등으로 사용이 가능할 뿐, 코드패치등을 통한 우회등이 불가능하다.
이유는 당연하지만 코드패치가 불가능하다.
그럼 차라리 IDA를 쓰는게 낫지않나.. 싶긴하다.
'Android > Hacking' 카테고리의 다른 글
[Android] adb 명령어 정리 (0) | 2020.10.08 |
---|---|
[Android] FRIDA 기본적인 문법정리. (0) | 2020.06.03 |
[Android] adb를 통한 Log 확인하기. (0) | 2019.10.30 |
[Android] Frida를 이용한 Hooking 방법. (0) | 2019.10.30 |
[Android] Frida 설치방법 (0) | 2019.10.30 |