Android的apk包,其实就是zip包,只不过后缀名换了而已!使用“好压”等解压缩工具解压,就可以看到里面的内容了。简单介绍一下吧。

以下就是解压出来的apk的内容:

其中:

assets                 对应工程目录下的 assets目录,存放附加资源。

lib                    对应工程目录下的 lib目录,存放程序引用库。

META-INF               存放apk签名信息。

res                    对应工程目录下的res目录,存放程序资源,如图片等

AndroidManifest.xml    程序的声明文件,包括SDK版本、Activity声明,权限声明等。

classes.dex            java字节码,即代码文件。

resources.arsc         资源标识文件,存放字符串等内容。

关于反编译的方法,百度一搜就一大堆,这个我就不多说了!

附上几个链接吧:

1、Android APK反编译详解(附图)

2、真正强大的APK反编译工具 DoAPK 1.0 发布!图形化操作,有图有真相

第1种方法,

通过使用“dex2jar”工具,

把“classes.dex”文件转换为“classes.dex.dex2jar.jar”,

然后再使用“JD-GUI”工具直接打开“classes.dex.dex2jar.jar”文件,

就可以看到详细的Java代码了。

通常会有3种情况:

1、如果开发者没有使用代码混淆的话,那么,你将看到100%的源代码。

2、如果开发者加入了代码混淆的话,那么,你将看到a,b,c,d之类的名字的代码。

3、还有一种情况是,你什么都看不到。这也是我写这篇文章的重点所在。

针对这个问题,我在网上搜索了三天,均没有任何相关的解决方法。

今天早上,偶尔看到有人说是系统问题,在win7下无法查看,但在xp下又可以查看。

于是,我就试着用虚拟机的windows 2003系统看看,结果,还是不行。

后来,仔细一想,怀疑是dex2jar工具版本有问题

于是在2003我安装了新的dex2jar,版本为0.9.8

结果,真的可以看到JAVA代码了。

下图是使用dex2jar 0.9.8的效果:

下图是dex2jar 0.7.0的效果:

由此可知:

有的apk无法反编译,是因为dex2jar的版本太低了!

建议:

在使用dex2jar工具的时候,最好使用最新版,以确保反编译的成功。

后来补充:

有些朋友喜欢使用apktool来进行反编译,操作过程中经常会出现各种问题,无法顺利反编译。

一般来说,这种APK在发布的时候动了手脚(比如加壳、增加特殊代码让apktool出异常……)

解决方法是,

1、首先确保apktool用了最新版本;

2、然后看看apktool出了什么错误,打开apktool.jar,定位到具体代码查看原因

这种情况比较复杂,也比较麻烦,有兴趣的朋友可以去“看雪论坛”多看看。

首先说APK反编译个人经验,2.0之后的APKTOOL(目前任何一款反编译工具都是基于APKTOOL)需要JDK1.8以上的兼容性。第二点,APK的路径是否包含中文,或空格。最好在磁盘盘符根目录下反编译编译。第三点,可以试着删除错误提示中的字行,重新编译。还有就是升级APKTOOL.JAR文件。

最新解决,apktool用的是apktool_2.0.0rc3.jar解决了这个问题,谢谢

apktool反编译时经常会出现下面的信息

1.Input file  was not found or was not readable.

2.Destination directory (C:\Users\user\a) already exists. Use -f switch if you want to overwrite it.

3.Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars c fil..........

解决方案:

1和2是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f -o ,参数具体的意思可以直接打apktool回车(windows)查看帮助

3是因为apktool版本过低导致,请升级到最新版本,地址:https://bitbucket.org/iBotPeaches/apktool/downloads,我使用的apktool是2.0版本,生成的xml文件没有乱码。

doapk java环境_关于有的Apk无法反编译的探究相关推荐

  1. 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++

    第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...

  2. 自己写的android apk反编译,获取Android自己写好了的apk以及反编译

    今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子 你可能有疑问,为什么要那么麻烦,从系 ...

  3. 转: android apk 防止反编译技术(1~5连载)

    转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...

  4. NP管理器 NPManager v3.0.49 安卓APK逆向反编译工具

    NP管理器 NPManager v3.0.49 安卓APK逆向反编译工具 NP管理器 NPManager 安卓反编译工具,NP管理器是一款强大的安卓反编译或反汇编工具,虽然这个NPManager反编译 ...

  5. Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具)

    Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具) 在Android发展前景相当好的情况下,本人最近搜集了一些关于Android的相关资源,当然包含以前发布的博客内容,进行了一 ...

  6. Android APK包反编译详细步骤教程

    下载安卓apk包反编译软件: https://download.csdn.net/download/LordForce/87485642 1. 解压 dex2jar-2.0.rar 文件. 2. 将 ...

  7. android apk 防止反编译技术第三篇-加密apk

    经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技 ...

  8. android apk 防止反编译技术第三篇-加密

    经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blo ...

  9. java环境_配置java环境变量

    1.找到此电脑我的电脑右键属性. 2.点击高级系统设置. 3.点击环境变量. 4.点击新建. 5.创建变量名JAVA_HOME必须是大写,变量值找到你的jdk的根目录复制下来,然后粘贴进去,点击确定. ...

  10. 安装java环境_(一)环境安装之Java

    安装java 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. 小知识: Java环境分JDK和JRE ,JDK就是Java Development Kit.简单的说JDK是面向开发人员使 ...

最新文章

  1. 康泰瑞影推高性能3D/4D超声可视化方案
  2. 「AlphaGo 之父」David Silver最新演讲,传授强化学习的十大原则
  3. Servlet、Tomcat、 SpringMVC 之间的关系
  4. CSS清除默认样式,成功入职腾讯
  5. js中函数的使用方式及回调函数
  6. QT 010 Qt 4.2 在线手册含UML图解释 User's Guide Documentation
  7. Excel中快速调整行高或列宽为适合内容显示的长度
  8. php推送系统,php 如何加入即时推送的功能
  9. InfoWorld 公布开源软件( 2019 年)
  10. iphone主屏幕动态壁纸_苹果11怎么设置动态壁纸?这个简单!只需这样操作
  11. 移动机器人运动控制算法入门
  12. 奇迹服务器放虚拟机,虚拟机双开奇迹教程
  13. 微信小程序数据库关于openId的坑
  14. Excel单元格提取数字
  15. Scala 与设计模式(四):Factory 工厂模式
  16. What Makes a Good Teacher
  17. Kafka学习笔记 --- 生产者producer与消费者关系comsumer
  18. 从头开始训练一个依存分析器
  19. 英特尔卖了通信与手机处理器,中国厂商是哭还是笑?
  20. 查询我的订单功能的实现

热门文章

  1. docx4j学习笔记
  2. 麦克纳姆轮全向移动原理(运动速度方向分析)
  3. arcgis更改字段名_了解字段属性、别名和表显示选项
  4. 线性代数学习心得(二)矩阵的逆和矩阵变换
  5. 干货分享——安卓USB通信
  6. PMP课程笔记:第10章 项目沟通管理
  7. 安卓平板python编程软件下载_notepad++下载-notepad++中文版下载v7.6.2 中文增强版-西西软件下载...
  8. PHP 框架集成使用 UEditor 编辑器的方法
  9. Ajax---菜鸟教程
  10. 屏幕录像专家录制超清视频教程如何解决转码后不清晰问题