creasylai19

a programmer(https://github.com/creasylai19)

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

上次看了两篇反编译APK文件的文章,反编译了几个音乐播放器,自己借用其中一个应用的界面做了一个相应播放器。近期有比较多的空闲时间,所以打算做一个LBS旅行应用。但目前发现又不会反编译了,所以还是记录下来,下次再忘直接看自己的文章比较快。(注:以下为Windows环境下)

1:反编译Java源码(从dex文件->jar文件->java文件)

利用工具(1)dex2jar,下载地址:http://code.google.com/p/dex2jar/(不知道能不能连上) (2)jd-gui,下载地址:http://jd.benow.ca/

解压后启动命令行(开始->cmd),更改目录到解压路径,如我的目录:D:\adt\apk2java\dex2jar-0.0.9.15

运行命令

(1) d:

(2) cd D:\adt\apk2java\dex2jar-0.0.9.15

(3) 解压要反编的APK文件,得到classes.dex文件,如我要反编译去哪儿旅游攻略,classes.dex文件路径为:D:\android_relate\travelLBS\com.qunar.travelplan_222048\classes.dex

(4) d2j-dex2jar -o D:\android_relate\travelLBS\com.qunar.travelplan_222048\qne.jar D:\android_relate\travelLBS\com.qunar.travelplan_222048\classes.dex

注:dex2jar命令已经废弃,官方推荐用d2j-dex2jar命令,上面的命令d2j-dex2jar -o [反编译后的文件保存位置及名字]  [要反编译的dex文件];如果不加-o参数即指反编译到d2j-dex2jar命令所在路径中,这里还有其他的参数,具体可以自己去看d2j-dex2jar -help

(5) 得到qne.jar文件后用jd-gui打开就行了,这个就不解释了,去用就懂

 

2:反编译资源文件

工具:apktoole,下载地址:http://code.google.com/p/android-apktool/ (假设我的apktool文件路径为:D:\adt\fby\prk-window)

 

运行命令

(1) d:

(2) cd D:\adt\fby\prk-window

(3) apktool d -s D:\android_relate\travelLBS\com.qunar.travelplan_222048.apk D:\android_relate\travelLBS\qne

注:-s是指src目录就不要反编译出来了,反编译的话得到的是.smali文件(对我反正暂时没什么用)。命令apktool d -s [apk文件路径] [生成的资源目录路径]。具体参数可以自己了解一下apktool -help

至此Java文件和资源文件都得到了。反编出来的java文件可能添加了混淆,类名为a,b,c这样,暂时没办法还原

截个图看一下吧:

命令行:

得到的文件(1个jar文件,1个资源目录):

 3:直接用apk2java反编译得到资源文件和java源码

apk2java,下载地址:https://apk2java.googlecode.com/files/apk2java_v1.0.zip

 解压后(例如,我的解压后目录D:\adt\apk2java\apk2java_v1.0),命令行切换到该目录,把要反编译的apk文件放到D:\adt\apk2java\apk2java_v1.0目录下

(1)D:

(2)cd  D:\adt\apk2java\apk2java_v1.0

(3)apk2java sample.apk

得到一个src的目录,如截图:

其中,com目录存放有java源码,other则是存在资源文件

posted on 2014-06-16 17:11  creasylai19  阅读(368)  评论(0编辑  收藏  举报