본문 바로가기
IT

apk 소스보기

by 세상밖으로  2012. 5. 10.
반응형

apk 소스보기

안드로이드 어플의 장점 중 하나가 애플사의 어플들보다 오픈소스식으로 열람이 가능하다는 것일텐데요.
일반적으로 안드로이드 애플리케이션들은 .apk 확장자를 가지고 있습니다.
윈도우로 따지면 .zip 파일이랑 같다고 보시면 될 거 같네요.
apk 안에 있는 소스파일의 내용을 확인하려면 다음에 설명하는 작업을 취해야합니다.

apk 소스보기 시작하겠습니다.

1. JAVA를 설치합니다.



[자바 설치 다운로드 경로] http://www.java.com/ko/

PC에 자바가 설치되어있지 않을경우 위에 링크를 통해 java를 설치합니다.
java가 설치되어 있지 않을경우 cmd(명령프롬프트) 작업시, 

'java'은<는> 내부 또는 외부명령, 실행할 수 있는 프로그램, 또는 배치파일이 아닙니니다. " 

라는 오류 메세지를 나타내므로 반드시 설치해야합니다.
(이미 설치되어 있다면 패스~~)   


2. 설치한 java 를 시스템 변수 등록합니다.



바탕화면의 내 컴퓨터 아이콘에 오른쪽 마우스 클릭해서 '속성'으로 들어가 '시스템 등록 정보' 창이 뜨면 '고급' 탭으로 이동하여 밑에 있는 '환경 변수' 클릭 → '새로만들기' → '새 시스템 변수' 에 마지막 이미지에 있는 이름과 값을 기입합니다. (이미지는 제가 먼저 해놓은거라 창이름이 틀리네요. '새로만들기' 누르시면 '새 시스템 변수' 창이 뜰겁니다. )
여기서 '변수 값'본인 컴퓨터에 설치한 java 경로를 입력해 넣으시면 되겠습니다.



추가적으로 '시스템 변수' 항목에서 'Path' 항목을 찾아 위에 이미지처럼
' %JAVA_HOME%\bin; ' 이라고 맨앞에 입력합니다.


3. apk 소스보기에 필요한 파일들을 다운받습니다.



위에 파일을 다운 받습니다.
압축을 푸시면,


'dex2jar-0.0.9.8''jd-gui-0.3.3.windows' 이렇게 두개의 폴더가 나오는데요.
'dex2jar-0.0.9.8' 는 apk 를 decompile 해주는 파일들이고 'jd-gui-0.3.3.windows' 는 decompile 된 apk의 소스를 볼 수 있게 해주는 프로그램입니다.


4. 'dex2jar-0.0.9.8' 를 '시스템 변수'에 등록합니다.



2번 과정과 같은 절차를 거쳐친후 '환경변수' 창에서 'Path' 항목을 찾고 '편집'버튼을 누릅니다.
'시스템 변수 편집' 창이 뜨면 '변수값'에 'dex2jar-0.0.9.8'가 설치된 경로를 추가해 넣습니다.

여기서 주의 할것은 기존에 입력되어있던 '변수값'은 지우면 않됩니다!!
추가하는 거에요!!
추가하는 방법은 미리 입력되어있는 값의 맨 끝부분에 ; 를 붙이고 'dex2jar-0.0.9.8' 경로를 뒤에 붙여넣기하시면 됩니다.

예를들면,
%JAVA_HOME%\bin;C:\Program Files\NVIDIA Corporation\PhysX\Common;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Documents and Settings\mdjo\바탕 화면\다운로드\make app\decom\dex2jar-0.0.9.8

이런식으로 말이죠. 똑같이 넣어시면 않되요. 저건 제 pc에 있는 경로와 내용들이구요. 여러분은 이미 기입되어 있는 내용에 위에 빨간부분만 추가하면 되는겁니다.
빨간 부분도 여러분이 설치한 'dex2jar-0.0.9.8' 경로를 넣으셔야 합니다.

이 과정을 거치는 이유는 이렇게 함으로써 나중에 하게될 작업중에 추출된 'classes.dex' 파일을 일일이 'dex2jar-0.0.9.8' 폴더로 복사, 붙여넣기 하는 작업을 하지않아도 되므로 한번해 놓으면 번거롭지않게 작업을 할 수 있기 때문에 해놓는게 좋을거 같습니다. (선택은 본인 마음대로..)


이로써 apk 를 뜯어볼 수 있는.... 소스를 볼 수 있는 환경이 조성 되었습니다.
이제 소스보기를 원하는 apk 파일에 대한 간단한 작업이 필요합니다.


5. apk 확장자 바꾸기.



위에 파일들을 설명드리자면 맨밑에 소스보기를 원하는 'test.apk' 라는 파일이 있습니다.
맨처음에도 말씀 드렸지만 apk는 윈도우에 zip 파일과 같다라고 말씀드렸는데요.
'test.apk' 의 확장자를 단순히 'zip'으로 바꿔주시면 됩니다.
이렇게해서 압축을 풀면 맨위에 보이는 'test 폴더' 가 나타나게 되는 것이죠.


6. 폴더속 classes.dex 파일 확인후 경로 알아두기.



위에 폴더 및 파일들이 5번 작업에서 수행한 'test.apk' 파일의 속내용들입니다.
여기서 중요한 파일이 바로 'classes.dex' 파일인데요.
잘 있나 확인후에 파일이 위치한 경로를 알아둡니다.


7. 명령프롬프트 창에서 디컴파일을 실시합니다.



시작 → 실행 → 'cmd' 입력하고 명령프롬프트창을 실행한 후 위에서 작업한 apk unzip한 폴더로 이동해주고
'dex2jar classes.dex' 라고 입력하고 enter키를 누릅니다.
정상적으로 실행됐으면 위와 같은 내용이 나타나게 됩니다.

4번 작업을 한 이유가 'classes.dex'을 복사해서 'dex2jar-0.0.9.8' 폴더로 붙여넣기로 옮기지 않아도 그냥 해당 apk unzip폴더로 찾아가서 거기서 바로 실행하면 되기 때문인 것이죠.


8. decompile 작업후 생성된 파일을 확인합니다.



디컴파일 작업후 위에 이미지와 같이 'classese.dex2jar.jar' 파일이 생성되었습니다.
안드로이드 어플들이 java 로 제작되었기 때문에 디컴파일후에도 자바 파일로 생성되었네요.


9. jd-gui.exe 를 실행하여 소스를 볼 수 있습니다.



두번째 폴더인 'jd-gui-0.3.3.windows' 폴더 안에 있는 'jd-gui.exe'를 실행하여 디컴파일로 추출된 'classese.dex2jar.jar' 파일을 불러옵니다.


이렇게 원하는 어플(apk)의 소스를 볼 수 있게 됐습니다.

이후 작업은 여러분 마음대로~~
이상 apk 소스보기 방법에 대한 포스팅을 마치겠습니다.


반응형

댓글