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

  • Read 13282
  • -
  • 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

개발자포럼
번호 제목 글쓴이 조회 날짜
46 [팁] 아두이노 강좌 및 개발문서 링크
레벨 5 이카루스
7253 11.14
45 [자유] 아두이노 - arduino 를 배워봅시다. 사진 첨부파일
레벨 5 이카루스
6522 11.13
44 [팁] 우분투 12.04 외장하드를 통한 rsync 백업 방법
레벨 5 이카루스
19561 11.08
43 [링크] 무료 프로그래밍 책 모음 - 영어, PDF
레벨 3 iloveme
8829 10.21
42 [링크] 운영중인 리눅스 서버 소프트웨어 레이드 설치 방법
레벨 5 이카루스
6305 10.16
41 [링크] Unity3d 기초강좌 동영상 사진
레벨 5 이카루스
6957 10.08
40 [링크] Unity3d Tutorial - Hack & Slash RPG
레벨 5 이카루스
6460 10.03
39 [링크] 처음 설치시 우분투 소프트웨어 레이드 구성 방법
레벨 5 이카루스
15954 10.02
38 [링크] 구글에서 출시한 웹디자이너 툴 프로그램 사진 첨부파일
레벨 5 이카루스
8898 10.02
37 [링크] 안드로이드 Preference – UI 정보, 간단한 변수 저장하기 방법
레벨 5 이카루스
11370 09.26
36 모바일 [링크] 구글 애드몹 설정 방법
레벨 5 이카루스
8809 09.20
35 [링크] Html5, CSS3 and javascript 공개 강좌 링크
레벨 5 이카루스
11346 09.13
34 [링크] JQuery의 힘으로 제작된 17 가지 오픈소스 웹 게임들
레벨 5 이카루스
12460 08.29
33 [링크] 초보용 자바 - 점프 투 자바
레벨 5 이카루스
6612 08.26
32 [자유] jsp를 경험하다
레벨 5 이카루스
3723 08.19
31 [팁] Enterprise Architect를 이용하여 클래스 다이어그램으로 분
레벨 5 이카루스
18125 08.17
>> [팁] 안드로이드 APK 파일 decompile 방법
레벨 5 이카루스
13283 08.11
29 [팁] 안드로이드 YouTube Player API
레벨 5 이카루스
13220 08.02
28 [팁] 구글 플레이 게임 서비스
레벨 5 이카루스
9182 08.02
27 [링크] 3G 유심을 이용한 유무선 WIFI 구축 사진 첨부파일
레벨 5 이카루스
7673 07.23
회원 로그인
아이디/비번 기억
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.
많이 본 글
댓글 많은 글
추천글