저는 주로 쇼핑몰 앱 개발 및 운영을 하는 아이폰/안드로이드 앱 개발자입니다.
요즘 보안에 민감해서 그런지 ISMS 인증 등 앱 취약점 점검들을 많이 하고있습니다.
취약점 점검을 하면 주로 앱 위 변조(무결성) 검사, 소스코드 난독화 여부, 디바이스 루팅(탈옥) 여부 체크 3가지를 중점적으로 점검합니다.
소스코드 난독화 (ProGuard) 적용 후 개발자는 제대로 소스코드가 난독화가 되었는지 확인이 필요하기 때문에
이번 포스팅에서는 Mac OS에서서 안드로이드 APK파일을 Decompile 하는 방법을 적어보겠습니다.
아래의 링크들은 디컴파일에 필요한 파일입니다.
dex2jar-2.0
- APK파일을 디컴파일 하기위해 필요합니다.
- 다운로드 : https://sourceforge.net/projects/dex2jar/
jd-gui-1.4.0.jar
- 디컴파일된 jar 파일을 보기 위해 필요합니다
- 다운로드 주소 (OS에 맞는 버전을 설치) : http://jd.benow.ca/
다운받은 dex2jar-2.0.zip을 적당한 경로에 옴겨놓고 압축을 풀어줍니다.
그리고 디컴파일할 APK파일을 하위 경로로 옴겨주세요
이제 터미널을 열어 dex2jar-2.0 경로로 이동합니다.
터미널 명령어가 익숙하지 않으신분들은 dex2jar-2.0 폴더를 우클릭 -> 정보가져오기를 눌러 위치를 드래그해서 복사 후 터미널에 붙여넣어주세요.
터미널에서 명령어를 쉽게 사용하기 위해 해당 경로로( dex2jar-2.0 압축 해제한 경로) 이동합니다.
디컴파일 명령어를 실행합니다.
sh d2j-dex2jar.sh "디컴파일 할 APK파일명"
sh d2j-dex2.jar.sh app-relases.apk
d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied
디컴파일 명령어를 실행 했을 때, Permission denied가 발생 할 수도있습니다.
Permission denied가 발생하면 d2j_invoke.sh 파일의 권한을 수정합니다.
chmod 744 d2j_invoke.sh
다시 한번 명령어를 실행합니다.
sh d2j-dex2jar.sh app-release.apk
정상적으로 디컴파일이 실행되면 아래와 같은 메세지가 출력됩니다.
dex2jar app-release.apk -> ./app-release-dex2jar.jar
이제 jd-gui-1.4.0.jar 파일을 실행 시켜주고 열린 창에 jar파일을 드래그해서 열어주면 디컴파일된 소스코드를 볼 수 있습니다.
'Android (안드로이드)' 카테고리의 다른 글
[Android] OS 8 SelectPopupAdapter NotFoundException. (0) | 2018.04.10 |
---|---|
[Mac] 안드로이드 스튜디오 Fabric 설치하기 (0) | 2017.10.12 |
[Mac]안드로이드 스튜디오 한글 깨짐 현상 (0) | 2017.06.01 |
[Mac] 안드로이드 스튜디오 ProcessException 에러 (0) | 2017.06.01 |
[Mac]안드로이드 스튜디오에서 파일 생성 시 자동으로 생성되는 코멘트 수정하기 (0) | 2017.03.08 |