본문 바로가기

카테고리 없음

apk->java

이거 하면서도 설마 이게 되려고... 의심하면서 했는데
맙소사 =_= 정말 자바소스파일로 되더군요ㅋㅋㅋㅋ
apktool 통해서 smali 파일로까지 해체하는건 그렇다쳐도
자바소스라니ㅋㅋㅋㅋ
그게 아마 apktools 만든 사람이 java 소스파일로까지 디컴파일 하려다가
실패한걸로 알고 있는데 이런데서 발견할 줄은 몰랐네요.

아무튼 방법 포스팅합니다.

먼저 준비물은, 
1. dexdump.exe ->  http://dex-decomplier.googlecode.com/files/dexdump.zip
2. undx.jar -> http://www.illegalaccess.org/undx/
3. java decompiler(class->java) -> http://java.decompiler.free.fr/?q=jdgui 

 요 세개를 준비해주시면 되겠습니다.

그리고 decompile을 하려는 어플을 apk로 추출한다음에
요놈을 그냥 확장자만 zip으로 바꿔서 압축해제합니다.
그럼 해당 폴더에 classes.dex 파일이 있을텐데
이게 class들을 압축해놓은 파일이라고 했던가.. 아무튼 이놈을 해체하면 됩니다.
방법은 앞서 준비물로 언급되었던 dexdump랑 undx.jar 를 해당 폴더에 위치시켜놓고
./gen 폴더를 생성한뒤에
 
java -DASDKLoc={Location of dexdump} -jar undx.jar {dexfile}

를 통해서 class파일로까지 변환시킵니다.
참고로 여기서 시간이 좀 걸리더군요. 정확히 측정은 안해봤지만 간단한 1~2mb정도의 apk를 대상으로 돌렸을때
한 5분 이상 걸렸던듯?

 아무튼 변환과정이 끝나면 앞서 생성했던 gen폴더내에 class파일들이 생성됩니다. (감격의 눈물 부왘)
그럼 역시 앞서 준비물로 언급되었던 java decompiler를 이용해 class파일들을 불러오면
java 소스파일로 변환해 보여줍니다. (여기서 2차 감격의 눈물 부왘)

우선 여기까지만 하고 되는게 신기해서 포스팅했는데
이걸 다시 apk파일로 묶을 수 있을지 모르곘네요.
음, apktools는 smali파일로 해체시킨걸 다시 apk로 묶는게 가능하던데
이걸 좀 연구해봐야하는걸까요... 

java -DASDKLoc={Location of dexdump} -jar undx.jar {dexfile}

요것이 무슨뜻인지 모르겠어염 ㅠㅠ 자세히좀 알려주세요

  • Lastiverse 2011/09/19 11:44 address edit & del

    나머지는 그대로 쓰되 Location of dexdump는 준비물로 있는 dexdump.exe의 위치를 말하는거구요, 같은 폴더내에 있다면 그냥 마침표 하나 찍으시면 됩니다.

    dexfile은 해당 덱스파일을 적으면 되는데 여기서는 classes.dex로 나올껍니다.