APP의 소스코드가 담긴 DEX파일을 숨기는 것은 매우 중요합니다

 

DEX 파일만 획득할 수 있다면, 원본 소스코드에 가깝게 복호화가 가능하므로 많은 개발자들 혹은 악성코드 제작자들은 DEX파일을 숨기기 위해 다양한 방법을 사용합니다

 

DEX파일 숨기기 위해, 많은 앱들이 Multi Dex를 이용합니다

MultiDex에 대한 내용은 아래 포스팅을 참고하고, MultiDex로 작성된 앱에 대한 동적디버깅 방법을 다뤄보고자 합니다

https://taesun1114.tistory.com/entry/Dynamic-Code-Loading-in-Android-featDexClassloader

다만, 해당 방법은 원본 DEX를 획득했다는 가정하에 두개의 DEX파일을 이용한 동적 디버깅 방법입니다

 

JEB를 통해 APK파일 로드 및 단말기에서 다음과 같은 명령으로 디버깅보드로 앱을 실행합니다

DEX파일 내 코드에서 DEX를 로드하는 DexClassLoader함수 직전에 BP설정(Ctrl+B) 및 원본 DEX에서 디버깅하고자 하는 코드에 같은 방법으로 BP를 설정합니다

 

JEB 메뉴 중 [파일] - [아티팩트 추가]를 통해 획득한 원본 DEX파일 추가 및 디버깅 하고자 하는 코드에 BP를 설정합니다

 

[디버거] - [시작]을 통해 단말기에서 앱을 실행하면 첫번째 DEX의 BP(DexClassLoader)에서 대기합니다.

Ctrl + F6을 통해 DexClassLoader함수를 실행하면 아래와 같이 원본 DEX의 BP를 설정한 부분에서 대기하는 것을 볼 수 있습니다

 

출처 : www.pnfsoftware.com/blog/debugging-dynamically-loaded-dex-files-with-jeb/

'Mobile' 카테고리의 다른 글

INSTALL_FAILED_INVALID_APK (with. zipalign)  (0) 2020.12.03
Frida cheat sheet  (0) 2020.10.11
Dynamic Code Loading in Android (feat.DexClassloader)  (3) 2020.05.08
odex to dex  (0) 2020.05.08
ro.debuggable 변경을 통한 동적 디버깅  (2) 2019.09.23

+ Recent posts