본문 바로가기

운동하는 개발자/Android

안드로이드 앱 디컴파일 / 분석 / 뜯어보기 -2(완) (dex2jar, jd-gui) / apk decompile

728x90

1편에서 classes.dex파일까지 추출한 상황

2021.07.30 - [운동하는 개발자/Android] - 안드로이드 앱 디컴파일 / 분석 / 뜯어보기 -1 (APK Extractor) / apk decompile

 

안드로이드 앱 디컴파일 / 분석 / 뜯어보기 -1 (APK Extractor) / apk decompile

※들어가기 앞서 Proguard나 각종 디컴파일 방지 기술이 적용되지 않은 앱에만 사용 가능합니다 1. 앱 추출 play store에서 디컴파일을 원하는 앱을 다운로드한다 (기본적으로 안드로이드에서 apk를

singo112ok.tistory.com


 

2. Jar 생성

앞서 추출한 clsses.dex파일을 jar파일로 변경해야 하는 차례이다
이때는 dex2jar이란 프로그램을 사용했다

압축파일로 되어있으며 압축을 전체 풀어보면 아래와 같다

이때 우리가 사용할 것은 d2j-dex2 jar.bat라는 파일이다 
우선 앞서 추출한 classes.dex라는 파일을 이 경로에 넣어주고 커맨드 창에서 해당 경로로 이동 후 다음과 같이 실행한다

d2j-dex2jar.bat classes.dex

성공 시 두 번째 줄과 같이 변환이 성공된 것이 나오고 에러시 에러 내용이 표시된다 

직접 넣은 classed.dex와 위 명령어로 생성된 jar파일

 

3. 앱 분석

이제 마지막단계이다 이 jar파일을 보기 위해서 jd-gui라는 프로그램을 사용한다

윈도우 버전을 다운받아 압축을 풀고 실행한 모습

실행한 jd-gui에서 File -> Open File을 선택해서 아까 생성한 jar파일을 열어주면 

위와 같이 패키지 구조가 보이게 된다 
이후 어떻게 분석해야 하는지는 이미 알고 있을 테니 매우 간단하게 설명하자면 기본적으로 dependence 된 패키지들이 보일 테고 com내부에서 메인 액티비티를 찾아서 거기서부터 이벤트를 추적해 나가야 한다
디폴트가 MainActivity.class로 이름 지어지지만 변경되는 경우도 있다
현재 예시에서 보여지는 삼성 계산기의 경우 메인 액티비티의 명은 Calculator.class였다

뭐 onCreate를 타고 onResume을 타고 등등 이미 다 알고 있을 테니 더 이상 설명은 생략하고 포스팅을 끝낸다


 

728x90