본문 바로가기

어떻게 할까/소프트웨어

android reversing : APK 분해, 조립, 인증 3콤보.

** 이 어플과 본 내용은 상관이 없을 수도 있습니다. **

국내의 어설픈 보안솔루션들 중 하나가 바로, 안드로이드나 아이폰이 루팅이나, 탈옥 된 경우 인터넷 뱅킹을 막는 경우라 하겠습니다.
폰의 사용자가 루팅이나 탈옥을 한다는 것은, 스스로 그에 대한 책임을 감당할 각오를 하고 하는 것인데, 그것을 왜 일부 ISP 같은 서비스에서 막는지 일단 이해가 안갑니다.
어려운 솔루션을 이용한것도 아니고, 단순히 su (superuser 권한) 관련 파일이 있으면 막는 단순한 방법으로 그저 루팅을 막아 보겠다는 이해가 안가는 취지는 일단 사용자로 하여금 분노를 일케 만들었습니다.

그래서 간단히 apk 를 수정할수 있는 방법을 알아 보겠습니다.
(사람을 짜증나게 만들어 노가다 하게 한 것이니, 저는 일단 솔루션을 올립니다.)

일단 환경은 Windows7 입니다. WindowXP 도 상관 없습니다만, Windows 환경에서 할수 있는 간단한 방법을 알아 보겠습니다.

가장 중요한 것은 첫째, JRE 와 JAVA SDK 입니다.
구글링으로 이정도는 검색하셔서 설치를 해 주시고.

다음 파일을 받아 command console 에서 apk 를 decompile 하는 작업과, 다시 수정된 것을 compile 하도록 합니다.


이 파일을 풀면 aapt.exe 와 apktool.jar/bat 파일이 생깁니다.
이 파일을 적절한 곳으로 옮긴 다음 해체 하려는 apk 파일을 함께 둡니다.
수정하려는 apk 파일을 test1.apk 라고 가정 했을때 다음과 같이 하실 수 있습니다.


명령어는 다음과 같습니다.

apktool d -d {decompile 할 apk 파일 이름}
예) apktool d -d test1.apk


이제 apk 파일이름으로 생긴 폴더 내의 소스를 수정한 다음, 다시 컴파일 합니다.


명령어는 다음과 같습니다.

apktool b -d {빌드 할 폴더 이름}
예) apktool b -d test1


어렵지 않습니다.
이제 컴파일된 jar 파일은 해당 폴더 내, dist 폴더 안에 해당 폴더이름.apk 파일이 생기게 됩니다.

다음으로 필요한 것은 바로 인증정보.
이것이 없으면 폰에서 설치가 되지 않습니다.
다음의 apk_manager 를 받습니다.


이 파일 역시 임의의 곳에 푼 다음.
생성된 여러 폴더 중에 "place_apk_here_for_signing" 에 아까 생성한 apk 를 복사 해 넣습니다.

이제 필요한것은 Script.bat 을 실행 하는 것 입니다.
실행을 하면 다음과 같은 console 창이 뜨게 됩니다.

n 을 눌러준 다음 다음에 뜨는 경고를 무시 합니다.
y 를 선택할 경우, 아까 복사한 파일이 모두 사라집니다. (다시 복사 해야 합니다)

그런다음 뜨는 메뉴중에 선택 할 것은 딱 하나.

16번. sign an apk 입니다.
이것을 수행 하고 나면 아까 복사한 apk 파일이 인증 정보가 포함 되게 되고, 이것을 폰에 전송하여 설치 하게 되면 모든 과정은 완료 되게 됩니다.

만약 오류가 발생할 경우 apk-manager 에 포함된 폴더 내에 log 파일이 생기게 되므로, 이 파일을 참조해서 오류 사항을 역추적 해 나가야 할 것 입니다.

그리 유익하고 정상적인 방법의 어떤 솔루션이 아니므로, 더이상 자세한 설명을 쓰기엔 힘들 듯 합니다만.
혹시라도 저처럼 특정 어플에 분노를 느끼시는 분들이라면, 위의 어렵지 않은 방법으로 (구글 안드로이드 SDK 없이) apk 를 수정할 수 있습니다.

당부의 말씀: (당연히) 악용하시면 안됩니다.