使用ApkTool以及dex2jar对apk进行反编译-更新异常以及解决方案
来源:互联网 发布:大英帝国 知乎 编辑:程序博客网 时间:2024/05/17 03:43
- 使用ApkTool以及dex2jar对apk进行反编译
- 相关工具下载地址
- 使用ApkTool对apk进行反编译以及打包
- 下载并解压ApkTool
- 使用ApkTool对apk进行反编译
- 使用ApkTool对apk进行打包
- 使用Dex2Jar以及JD-GUI反编译apk
- 下载Dex2Jar以及JD-GUI
- 使用dex2jarbat得到jar文件
- 使用JD-GUI打开jar文件
- 总结
- 更新异常以及解决方案
- Input file xxx was not found or was not readable
- Caused by javaioIOException Expected 0x001c0001 got 0x00000000
- Exception in thread main javalangNullPointerException
使用ApkTool以及dex2jar对apk进行反编译
相关工具下载地址:
ApkTool: https://ibotpeaches.github.io/Apktool/
Dex2Jar: https://sourceforge.net/projects/dex2jar/
JD-GUI: http://jd.benow.ca/jd-eclipse/update/#jd-gui-download
使用ApkTool对apk进行反编译以及打包
1.下载并解压ApkTool
在cmd命令行中进入ApkTool的文件夹(win7系统以上快捷键为shift+鼠标右键),输入apktool,出现如下图片中的提示信息,表示成功。
注意的是,在apktool.bat中,可以修改使用的apktool.jar的版本。
2.使用ApkTool对apk进行反编译
在cmd命令行中进入ApkTool的文件夹,反编译命令:apktool.bat d [apk文件] [输出文件夹]
测试如下图,成功后,会在指定的输出文件夹下生成反编译后的文件。
3.使用ApkTool对apk进行打包
在cmd命令行中进入ApkTool的文件夹,打包命令:apktool.bat b [资源文件夹] [打包生成的apk文件]
测试如下图,成功后,会在指定的输出文件夹下生成打包好的apk文件。
注意,这里打包的apk文件是未经过签名的,可以看到在安装的时候会提示如下错误,如果需要安装,解决方法是需要进行重新签名。
使用Dex2Jar以及JD-GUI反编译apk
使用dex2jar可以将apk文件中的dex文件转换成jar文件,然后就可以通过JD-GUI打开得到的jar文件来查看相应的Java代码。
1.下载Dex2Jar以及JD-GUI
工具的下载地址见文章上方
2.使用dex2jar.bat得到jar文件
将需要反编译apk的后缀格式改成zip,然后使用解压出来,其中的classes.dex就是我们需要进行反编译的部分。
在cmd命令行中进入Dex2Ja文件夹,反编译命令:d2j-dex2jar.bat [classes.dex文件]
成功后,会在Dex2Ja文件夹下生成classes-dex2jar.jar文件,这个jar文件就是反编译后的文件。
3.使用JD-GUI打开jar文件
使用JD-GUI软件打开classes-dex2jar.jar文件,就可以查看反编译的代码了。
注意的是,如果进行反编译的apk进行了混淆处理,那么我们反编译看到的基本就很难阅读了。
总结
使用ApkTool对apk文件进行反编译,将dex文件转成了smali文件,更适合提取apk中的资源文件,比如布局文件以及图片等资源。
使用Dex2Jar对apk进行反编译,最终将dex文件转化成了jar文件,通过JD-GUI打开,对于未混淆的apk来说,更适合通过反编译来看相应得Java源码。
更新异常以及解决方案
在使用ApkTool进行反编译的时候,有时候我们会遇到如下的异常,下面我来贴出一下我的解决方法,希望可以给遇到问题的同学们帮助。
错误类型:
- Input file xxx was not found or was not readable.
- Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00000000
- Exception in thread “main” java.lang.NullPointerException I: Loading resource table from file: C:\Users\用户名\apktool\framework\1.apk
Input file xxx was not found or was not readable
这种问题是在2.1.0中,反编译的指令与1.5.3不同了,如果需要指定反编译输出文件夹,需要在前面加 -o 表示输出文件夹。
成功如下:
Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00000000
这种问题一般是apktool的版本不匹配导致的,解决方案:
- 第一种是修改当前项目的sdk的buildtools版本,在当前项目中的project.properties文件中修改。
- 第二种是使用新版的apktool进行反编译,但是切换apktool版本可能会遇到下一个问题,具体解决方案见下文。
Exception in thread “main” java.lang.NullPointerException
这个问题一般是切换apktool的jar包版本问题导致的,可以在命令行中看到错误提示:I: Loading resource table from file: C:\Users\用户名\apktool\framework\1.apk。
解决方法,只要把命令行提示中的framework文件夹中的1.apk文件删掉,重新进行反编译即可解决问题。
- 使用ApkTool以及dex2jar对apk进行反编译-更新异常以及解决方案
- apk文件反编译以及签名打包(dex2jar & apktool,apk-sign)
- Windows中使用 apktool + dex2jar+jdgui+AXMLPrinter2 对apk进行反编译
- 使用APKTool+dex2jar+jd_gui反编译apk文件
- 使用apktool编译以及反编译apk文件
- android技巧:apk文件反编译以及签名打包(dex2jar&jd,apktool,apk-sign)
- Mac中对android apk进行反编译(apktool dex2jar jd-gui)
- apktool dex2jar 反编译apk文件
- 使用apktool 反编译apk以及使用aapt查看apk信息
- android使用apktool 和 dex2jar反编译apk文件
- android apk反编译 apktool、dex2jar、jd-gui工具的使用
- Android 使用apktool + smali + dex2jar + jdgui实现apk反编译
- APK的反编译工具,Apktool,Dex2jar,JD-GUI等使用
- mac下使用APKtool,dex2jar,jd-gui反编译APK
- 反编译利器Apktool和Dex2jar导入源码以及编译调试
- apktool+dex2jar+xjad反编译APK文件
- apktool + smali + dex2jar + jdgui实现apk反编译
- apktool+dex2jar+xjad反编译APK文件
- maven工程下 读取resource下配置文件
- Android FloatingActionButton,Snackbar
- 数据按某个字段分组,且取每个分组的最大值
- Android语言国际化values资源文件命名规则
- 安卓 activity过渡动画
- 使用ApkTool以及dex2jar对apk进行反编译-更新异常以及解决方案
- 透明栏颜色改变
- log4j配置详解
- Boost程序库学习-bind与function
- Android内存泄漏的各种原因详解
- 1.7前置声明与定义
- JavaSE学习_08_abstract_interface_innerclass_constantpool
- 经典排序算法归纳笔记(1)
- Android自定义View初体验,实现圆形TextView的三种方式