준비물 :
ApkTool : https://ibotpeaches.github.io/Apktool/
1. ApkTool을 통한 디컴파일
cmd를 열어 아래의 명령어 입력
ApkTool d [target.apk]
△ 실행화면
△ 얻은 결과물(폴더)
2. 수정
위 링크에 설명된 방법을 통해 사전에 디컴파일 해서 얻은 정보를 통해 smali 코드를 수정한다.
3. 리패키징
아래의 명령어를 통해 리패키징이 가능하다.
apktool b [target dir]
여기서 [target dir]은 1번 과정에서 얻은 디렉토리를 뜻한다.
△ 실행화면
위 사진처럼 [target dir]\dist에서 리패키징된 .apk 파일을 확인할 수 있다.
4. 서명(signature) 추가
1~3번 과정을 통해 얻은 리패키징 된 .apk은 서명이 되어 있지 않은 .apk 파일이다.
서명이 되어 있지 않으면 안드로이드 OS 내에서 설치가 불가능하다. 따라서 서명되지 않은 .apk 파일에 서명을 해줄 필요가 있다.
cmd에 아래의 명령어를 차례대로 입력하면 된다.
서명 생성
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
앱에 서명 등록
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
등록된 서명 확인
jarsigner -verify -verbose -certs my_application.apk
아니면 첨부된 파일을 열어서 아래의 명령어를 사용하도 된다.
java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk
후자는 사전에 생성한 인증서를 가지고 서명하는 방법이다.
압축 파일에 인증서와 서명을 위한 jar 파일이 존재한다.
'리버싱 > Android' 카테고리의 다른 글
adb 명령어 정리 (2) | 2017.12.07 |
---|---|
AndroidManifest.xml의 android:debuggable 수정하기 (0) | 2016.11.02 |
JNINativeInterface JNIENV (0) | 2016.10.15 |
코드엔진 SmartApp 04 (작성중) (0) | 2016.08.18 |
코드엔진 SmartApp 03 (0) | 2016.08.18 |
코드엔진 SmartApp 02 (0) | 2016.08.18 |
안드로이드 Dex 디스어셈블러 (0) | 2016.08.18 |
코드엔진 SmartApp 01 (0) | 2016.08.18 |
apk 파일 디컴파일 (2) | 2016.08.16 |
Android Root Detection Techniques in JNI (0) | 2016.08.09 |
댓글