win/mac下反编译Android安装包-APK文件
2016-05-16 23:33
447 查看
mac下,对apk进行反编译主要是用到apktool和dex2jar两个工具(自行下载),如果只是想拿到apk里的一些图片或其他资源或是layout文件,直接使用apktool -d xxx.apk即可。如果是要查看代码,就使用dex2jar.sh反编译一下apk,然后使用jd-gui工具查看反编译后的.jar文件即可。今天还将介绍一款新的反编译神器:Jadx。
![](http://img.blog.csdn.net/20160517081510120)
b,解压zip获取class.dex文件
c,将class.dex文件放到jadx目录下
进入该目录,执行终端命令:
![](http://img.blog.csdn.net/20160517081652509)
//此时编辑.bash_profile文件,加入你的jadx path:
保存修改即可:
然后会提示你选择要反编译的apk,dex文件:
![](http://img.blog.csdn.net/20160517081614478)
在反编译较大的apk时,如果遇到jadx-jui卡顿和假死的情况,可适当优化jvm相关参数,在~/.bash_profile中加上了如下语句:
微博:http://weibo.com/u/2876301234
微信公众号:OpenDeveloper
分享不仅限于Android,Web 开发,做开放的完美的开发者。
博客:http://blog.csdn.net/dzsw0117
一,apktool的使用
用到的命令: java -jar apktool_2.0.2.jar d androidxxx.apk 其中:androidxxx.apk 要进行反编译的apk包。1,命令行进入apk文件所在的目录:
cd /Users/....
2,执行命令:
apktool d android.apk
二,反编译java源文件
1,获取classes.dex文件。
这就用到dex2jar和jd-gui了,将androidxx.apk重命名改成androidxx.zip,然后利用解压缩软件解压,得到一个androidxx的目录,我们要拿到里面的classes.dex文件。2,将classes.dex文件复制到dex2jar-0.0.9.15目录下
cd /Users/duqian/Downloads/android反编译/dex2jar-0.0.9.15
3,执行命令:
sh dex2jar.sh classes.dex
4,用jd-gui工具打开这个jar包就可以看到java源代码了。
三,反编译新工具jadx
在jadx出现之前,一般是使用apktool和dex2jar这两个反编译工具。1,下载源码或者release包。
skylot/jadx:https://github.com/skylot/jadx/releases2,使用jadx
jadx也有GUI,直接双击bin目录下的jadx-gui,然后选择要反编译的apk即可。如果要保存源码,选择File->Save ALL即可保存文件,然后就可以导入Android Studio等IDE中。3,使用命令行反编译apk文件
a,把apk改成zipb,解压zip获取class.dex文件
c,将class.dex文件放到jadx目录下
进入该目录,执行终端命令:
cd path/to/jadx/bin/ jadx -d out classes.dex #直接输出.java文件到out目录 jadx-gui classes.dex #使用gui打开
如果执行命令没有效果,提示commond not found,或者双击打开jadx,说程序来源不明,配置环境变量即可使用,如下:
open .bash_profile
//此时编辑.bash_profile文件,加入你的jadx path:
PATH=${PATH}:/Users/duqian/Downloads/android反编译/jadx-0.6.0/bin
保存修改即可:
source .bash_profile
然后会提示你选择要反编译的apk,dex文件:
cd /Users/duqian/Downloads/android反编译/jadx-0.6.0/bin DuQian-MBP:bin duqian$ jadx-gui
在反编译较大的apk时,如果遇到jadx-jui卡顿和假死的情况,可适当优化jvm相关参数,在~/.bash_profile中加上了如下语句:
export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"
四,总结
apktool+dex2jar+jd-gui一直是一个比较流行的Android反编译方式,jadx相比上面的组合具有如下两个优点:jadx可以反编译出.java文件
源码直接显示资源名称,而jd-gui里显示的是资源ID。
杜乾,Dusan,Q:291902259微博:http://weibo.com/u/2876301234
微信公众号:OpenDeveloper
分享不仅限于Android,Web 开发,做开放的完美的开发者。
博客:http://blog.csdn.net/dzsw0117
相关文章推荐
- android布局属性详解
- Android的Window
- android studio安装和配置
- Android多媒体--通过SurfaceView录像并存储
- Android Resource类创建过程(未完)
- 利用接口实现service与Activity消息传递
- 一起来学习android自定义控件3——边缘凹凸的View
- android学习笔记(五)__Activity
- Android五种储存方式之一文件内部File存储
- Android五种储存方式之一SharedPererences存储
- android学习笔记(四)__xml和widget
- android客户端学习-listview的列表点击事件
- Android的手势识别
- android 自定义Toast
- Android 实现镜像效果
- Rxandroid中map等操作,如何切换线程
- Android模块
- android开发笔记之 仿优酷圆形菜单
- android中不同类型任务栈的使用
- 如何自定义圆弧按钮?