안드로이드개발 output 인 apk 파일에서 원 소스를 다시 복원해 보겠습니다.
복원결과가 100% 원본과 맞지는 않지만, 원본의 의도 및 구조를 충분히 파악 할 수 있습니다.
프로그램중 리소스만 수정하면 자신만의 프로그램처럼 만들어서 사용도 가능??? 하죠. ㅋㅋㅋ
1. ASTRO App 을 이용하여 android apk 파일을 백업 폴더로 백업하기 :
아래의 사이트를 참조 하시면 쉽습니다.
reference http://gemdu.tistory.com/100
2. apk 풀기 :
jar xvf downloaded.apk
3. dex2jar를 이용해서 classes.dex 파일을 jar 파일로 변환 하기
(dex2jar : http://code.google.com/p/dex2jar/)
- my dex2jar location : ~/devApps/dex2jar-0.0.9.8
mulder@~/downloads/temp$ ls
AndroidManifest.xml META-INF classes.dex res resources.arsc downloaded.apk
mulder@~/downloads/temp$ ~/devApps/dex2jar-0.0.9.8/dex2jar.sh classes.dex
dex2jar version: translator-0.0.9.8
dex2jar classes.dex -> classes_dex2jar.jar
Done.
mulder@~/downloads/temp$
4. 변환된 jar 파일 풀기
mulder@~/downloads/temp$ ls -tlr
total 13984
-rw-r--r-- 1 mulder staff 114684 2 21 18:59 resources.arsc
-rw-r--r-- 1 mulder staff 814016 2 21 18:59 classes.dex
-rw-r--r-- 1 mulder staff 18024 2 21 18:59 AndroidManifest.xml
-rwxrwxrwx 1 mulder staff 5430930 3 19 02:12 downloaded.apk
drwxr-xr-x 11 mulder staff 374 3 19 11:28 res
drwxr-xr-x 5 mulder staff 170 3 19 11:28 META-INF
-rw-r--r-- 1 mulder staff 777994 3 19 11:30 classes_dex2jar.jar
mulder@~/downloads/temp$
ulder@~/downloads/temp$ mkdir classes
mulder@~/downloads/temp$ mv classes_dex2jar.jar classes
mulder@~/downloads/temp$ cd classes
mulder@~/downloads/temp/classes$ ls
classes_dex2jar.jar
mulder@~/downloads/temp/classes$ jar xf classes_dex2jar.jar
mulder@~/downloads/temp/classes$ ls
classes_dex2jar.jar com org
mulder@~/downloads/temp/classes$5. jad 를 이용하여 class 파일을 java 파일로 디컴파일 하기 (jad : http://www.varaneckas.com/jad)
mulder@~/downloads/temp$ mkdir src
mulder@~/downloads/temp/src$ cd src
mulder@~/downloads/temp/src$ cd src
mulder@~/downloads/temp$ ~/devApps/jad158g.mac.intel/jad -r -b -dead -ff -i -o -space -nonlb -s java classes/**/*.class
한방에 하기
#!/bin/bash
apkf=YOUR_DOWNLOADED.apk # 원하는 걸로 교체
dex2jar_home=~/devApps/dex2jar-0.0.9.8 # user depend
jad_home=~/devApps/jad158g.mac.intel # user depend
echo "decompile run for $apkf"
jar xf $apkf
mkdir classes
mv classes.dex classes
cd classes
$dex2jar_home/dex2jar.sh classes.dex
jar xf classes_dex2jar.jar
cd ..
mkdir src
cd src
$jad_home/jad -r -b -dead -ff -i -o -space -nonlb -s java ../classes/**/*.class
echo "OKKKKKKK"
뽀너스... 감사하면서
THE END