弄了个开源项目,想看看其中是怎么实现的一个过程,于是开始反编译其apk。以下为测试过程
创建一个反编译文件目录,这个目录存放反编译工具
cd
mkdir Decompilation
cd Decompilation
下载工具,完整的过程,工具需要4个包。
首先,如果要对源代码进行查看的话:
先下载一个把apk还原成.jar的工具。名字叫 dex2jar
http://code.google.com/p/dex2jar/downloads/list
进入这里点击下载,一般情况是如下操作
cd cd Download unzip dex2jar-0.0.9.14.zip mv dex2jar-0.0.9.14 /(your path)/Decompilation
这个时候自己找了一个测试文件 test.apk,取出这个test.apk中的classes.dex,并将classes.dex放入dex2jar-0.0.9.14之下,并执行相关命令,如下:
mkdir test cp (your path)/test.pak (your path)/test cd (your path)/test file test.apk unzip test.apk ls cp classes.dex (your path )/Decompilation/dex2jar-0.0.9.14 cd (your path)/Decompilation/dex2jar-0.0.9.14 ./d2j-dex2jar.sh classes.dex test.jar
这个时候就生成了test.jar的java包了吧,那就用另外一个软件打开这个包,进行代码的阅读即可,这个是jd-gui
http://java.decompiler.free.fr/?q=jdgui
下载属于linux版本的。
下载完毕后,也将它解压缩,放进Decompilation目录吧,这样用起来就方便一些。但是注意的是,它这个软件解压后外面没有文件夹,所有的文件加压出来后就散放在外面的,如果为了整洁,就自己mkdir 一个目录吧。
mkdir jdGUI cd jdGUI tar -xvf jd-gui-0.3.5.linux.i686.tar.gz
那么接下来就可以使用jdgui打开test.jar文件了
./jd-gui test.jar
是吧,这个就很熟悉了
----------------------
但是光源代码不行啊,还需要其源代码的资源配置文件啊,好吧,下载另外2个包。这里说明的是,为啥要下载两个包呢?因为有一个包工作的时候,需要另外一个包中的一个软件,也就是.jar格式的。当然,就是传说中apktool工具
----------------------
http://code.google.com/p/android-apktool/downloads/list
这个下载链接中有4个包,因为是在linux下面的,那就下载linux对应的两个包就OK了
-----------------------
这两个包最平凡的解压等等工作,不再赘述。
----------------------
./apktool d test.apk
然后就生成了test目录了,在test目录下,作为一名android开发人员,那些东西是最熟悉的了。当然,可以适当的进行资源的修改什么的,那都是自己私下里的事情了,或者说怎么把弄到eclipse里面去,那也就是非常容易的了。
如果替换资源后,还想弄回apk文件的话,执行下面的语句
./apktool b test
然后cd 进入 test,在test目录下的某个角落,会有自己期望的test.apk文件出现的。---估计是在dist目录下吧~v~
---------------------------------------
整个过程是,自己得有java环境,不知道是否需要android SDK环境不,因为我pc里本身就有,所以无法知道是否必须要,但java是肯定需要的。
这个过程就是一个测试的过程,测试的时候,不要用hello world测试,因为这个似乎是空的,没有意义;并且,如果一个apk被别人故意以各种"不同寻常"的方式加密后,能否反编译出来还需要验证一下--幸好自己的这个项目是拿的开源社区的,应该不存在这一个问题。
同时,上面的这些工具其实可以配置成全局工具,那么就是需要小小的修改下环境变量就OK了。
--------------------------------
当然,这个过程,整体是有缺陷的,就是说太麻烦了,接下来寻找一个更方便的方法。
over