关于有的Apk无法反编译的探究
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反编译详解(附图)
http://blog.csdn.net/sunboy_2050/article/details/6727581
2、真正强大的APK反编译工具 DoAPK 1.0 发布!图形化操作,有图有真相
http://bbs.hiapk.com/thread-1226617-1-1.html
第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解决了这个问题,谢谢
1.Input file was not found or was not readable.
关于有的Apk无法反编译的探究的更多相关文章
- android apk 防止反编译技术第四篇-对抗JD-GUI
又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...
- 转: android apk 防止反编译技术(1~5连载)
转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...
- android apk 防止反编译技术第一篇-加壳技术
做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成 ...
- 获取Android自己写好了的apk以及反编译
今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子 你可能有疑问,为什么要那么麻烦,从系 ...
- Android Apk的反编译和加密
这几天在上海出差,忙里偷闲学习了一下Apk的反编译工具的基本使用.下面就简单介绍一下如何将我们从网上下载的Apk文件进行反编译得到我们想要获得的资源文件和源码. Android的应用程序APK文件说到 ...
- Android开发:APK的反编译(获取代码和资源文件)
一.反编译工具: 1.APKTool: APKTool是由GOOGLE提供的APK编译工具,能够完成反编译及回编译apk的工作.同时,它也有着安装反编译系统apk所需要的framework-res框架 ...
- Android测试(三)——APK文件反编译
APK文件反编译: 在进行反编译操作前,先简单介绍下smali文件: smali是一种文件格式,语法和Jasmine的语言类似,这些smali文件包含开发应用程序时编写的java类的代码. 工具:ja ...
- APK防反编译技术
APK防反编译技术 下载地址:地址 我们的APK实际上就是一个ZIP压缩文件,里面包括有一个classes.dex.我们编译后生成的程序代码就所有在那里了, 通过apktool等工具能够轻松地将它们反 ...
- android apk 防止反编译技术第二篇-运行时修改字节码
上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...
随机推荐
- ASP.NET-优化websit
如何优化一个网站 1.如果是数据库的问题则尝试添加索引.优化SQL语句,如果是算法的问题,则优化算法. 2.如果对于一些不经常改动的页面可以使用静态页技术! 3.对于一些数据不需要及时更新的而且取数据 ...
- HDU 4316 Contest 2
三个摄像头,在XOY上与立体的点求出在平面上的交点,然后求出凸包.三个凸包相交的面积即是所求,即是可以用半平面交的方法求解了. 模板题了.代码拿别人的. #include<cmath> # ...
- 译:MySQL性能优化的21条最佳经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...
- [SCSS] Pure CSS for multiline truncation with ellipsis
1. Pure CSS 2. Responsive 3. No need to recalculate on resize or font’s load event 4. Cross browser
- 开源ETL工具kettle--数据迁移
背景 因为项目的需求,须要将数据从Oracle迁移到MSSQL,不是简单的数据复制,而是表结构和字段名都不一样.甚至须要处理编码规范不一致的情况,例如以下图所看到的 watermark/2/text/ ...
- Android 启动界面的制作
直接看实例吧 package com.example.textview; import android.app.Activity; import android.content.Intent; imp ...
- Educational Codeforces Round 6 C. Pearls in a Row set
C. Pearls in a Row There are n pearls in a row. Let's enumerate them with integers from 1 to n from ...
- 51nod-1359: 循环探求
[传送门:51nod-1359] 简要题意: 给出n和k,求出最小的x满足$n^{x}≡n(mod\;10^{k})$ 题解: 真是一道有(du)趣(liu)题目 首先我们设X[k-1]为$n^{x} ...
- bzoj3436: 小K的农场(差分约束)
3436: 小K的农场 题目:传送门 题解: 查分基础: t==1 a>=b+c t==2 b>=a-c t==3 a>=b+0 b>=a+0 跑最长路一A 代码: #i ...
- ORA-01950: 表空间'USERS'中无权限的2种解决办法
在创建了一个新的表空间和一个新的用户,当用这个新用户创建表时, 却出现:ORA-01950: 表空 间'USERS'中无权限. 我已经把创建表的权限赋给了此用户,怎么还会缺少权限呢?解决办法 ...