티스토리 뷰

반응형

1.

https://github.com/JesusFreke/smali/wiki/smalidea

 

JesusFreke/smali

smali/baksmali. Contribute to JesusFreke/smali development by creating an account on GitHub.

github.com

  위 링크에서 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를 쓰는게 낫지않나.. 싶긴하다.

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함