[팁] 안드로이드 APK 파일 decompile 방법

  • Read 13283
  • -
  • Score 0/0
By. 2013.08.11 15:26
레벨 5 이카루스 ( Lv. 5 )

#1 dex2jar-0.0.9.13 를 이용한 APK 디컴파일


먼저 아래를 통해 dex2jar를 다운로드 받습니다.

 dex2jar-0.0.9.13.zip


압축을 풀고, APK파일 내부에 있는 classes.dex 파일을 꺼내서 dex2jar-0.0.9.13 폴더에 넣습니다. 이후 아래와 같은 명령어로 디컴파일을 합니다.


dex2jar classes.dex


이렇게 하면, jar 파일이 나오는데요.

 jd-gui.exe


이 파일로 열면 안드로이드 코드가 Java파일로 변경되어 보이는 것을 확인하실 수 있습니다. 이렇게 하는 이유는, 본격적으로 리패키징을 하기 위해 코드를 분석하는 것인데요. 여기서 Java 코드를 분석해서 어디를 패치할 지 알아야 합니다.



#2 apktool1.5.2 를 이용한 APK 디컴파일 및 리패키징


 apktool1.5.2.zip


아래 파일을 다운 받으시면 디컴파일과 리패키징을 모두 할 수 있는 파일이 모여 있습니다.위에서 어느 부분을 수정할 지 파악했다면 이제는 본격적으로 리패키징을 할 차례 입니다. 분석할 APK파일을 apktool1.5.2 폴더에 넣으시고 아래와 같은 명령어를 입력합니다.



apktool d <apk name> <directory>


이렇게 하시면 정한 디렉토리 안에 apk파일이 디컴파일되서 나옵니다. 이후 smali 코드가 나오는데, 위에서 분석한 smali 파일을 메모장으로 열어서 간단하게 수정하고 싶은 부분을 수정해 줍시다.

apktool b <directory>

이렇게 하시면 수정한 smali 파일을 포함해서 dist 디렉토리에 다시 리패키징된 apk파일이 생성됩니다. 근데, 문제는 바이너리가 수정 되었기 때문에 자체적으로 Signing을 받아야 합니다.(정상적으로 signing 받은게 아니기 때문에 외부에서 배포된 APK를 아무거나 받아서 설치한다면 감염이 되겠죠?)


#3 motizen-sign을 이용한 테스트 Signing

 motizen-sign.zip


파일을 받으시면 Sign.bat 파일이 있는데, 이것을 메모장으로 열어서 아래와 같이 수정해 줍시다.


java -jar signapk.jar testkey.x509.pem testkey.pk8 <새로 만들어질 파일 명>.apk 


그리고 실행!


#4 결론

테스트 사이닝이기 때문에 본 방법은 어플리케이션 한글화, 혹은 가벼운 변경 등으로 인한 악성행위 삽입 등을 할 수 있습니다. 


출처 : http://blog.naver.com/man8408/110111707630

안드로이드 휴대폰에서 apk 백업파일 만들기 Linda Manager
 http://blog.naver.com/sleepre2004/80190330253

개발자포럼 -Total. 106

개발자포럼
번호 제목 글쓴이 조회 날짜
106 [링크] Error: diskfilter writes are not support
레벨 3 iloveme
790 09.19
105 [링크] 개발관련 문서 모음
레벨 3 iloveme
1048 08.31
104 [링크] 게임회사 해외취업 자료조사
레벨 3 iloveme
1142 03.23
103 [링크] 어려운 것을 쉽게 배우는 방법 : 슈퍼 파워를 장착하기 위한 3단계 학습
레벨 3 iloveme
1364 02.18
102 [링크] 무료 SSL 인증서 설치 방법
레벨 3 iloveme
1456 01.28
101 [링크] JAVA XML Parser DOM/SAX 비교
레벨 3 iloveme
1502 06.05
100 [링크] 초보 개발자가 꼭 알아두어야 할 다섯 가지 기술들
레벨 3 iloveme
1564 06.03
99 [링크] 안드로이드 share 공유 버튼 추가하기
레벨 3 iloveme
1855 06.03
98 [링크] 공유 share api 제공 사이트
레벨 3 iloveme
1272 06.03
97 [링크] 안드로이드 core, ui 관련 오픈소스 사이트
레벨 5 이카루스
3763 05.14
96 [팁] Android GCM 구축 방법 정보 모음
레벨 5 이카루스
4378 05.08
95 [링크] Github 이클립스와 연동하기
레벨 5 이카루스
1897 04.14
94 [링크] Ubuntu GitHub 서버 설치 방법
레벨 5 이카루스
3907 04.14
93 [팁] 카카오링크 해시키 추출 방법
레벨 5 이카루스
6062 03.16
92 [팁] Android 구글 admob 전면 광고 적용 방법
레벨 5 이카루스
9789 03.06
91 [팁] Side-2930C SCSI Driver 첨부파일
레벨 3 iloveme
1389 03.04
90 [자유] Mezzmo (1005) (Windows) - 미디어스트리밍 프로그램
레벨 3 iloveme
7156 01.22
89 [자유] vmware 11 설치 방법
레벨 3 iloveme
7473 01.18
88 [팁] Winamp를 이용한 음악방송 방법 첨부파일
레벨 5 이카루스
2933 11.21
87 [팁] SHOUTcast 를 이용한 인터넷 라이브 방송 시스템 구축
레벨 5 이카루스
3652 11.21
회원 로그인
아이디/비번 기억
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.
많이 본 글
댓글 많은 글
추천글