聊聊Android的APK反编译
上一篇《How To Use Proguard in Android APP》介绍了如何对Android进行混淆,现在来对它进行反编译看看,里面有些什么东西。
APK文件,其实也是一个压缩文件,我们可以把它的后缀改为zip格式,解压缩后看看里面的东西,如下:
这里,Android对XML之类文件进行了加密,因此看到的是乱码:
resources.arsc文件是资源文件的二进制索引,每个目录下都放着相关的资源文件,另外还有一个重要角色:classes.dex,这个就是源码打包后的文件,后面再搞它。
Android的反编译经历3个步骤:
apk ---> dex/smali ---> jar
用到3个工具,可以从这个链接查找下载:https://www.linjk.cn:3298/iHouse/utils/file_list_upload.php
apktool ---> dex2jar ---> jd-gui
在使用apktool时若发生解析错误,建议使用更新版本的。
下面,开始进行反编译:
1. 使用工具apktool,参数d代码解码(decode),另外参数b可用于打包(binary)
执行命令后目录结构如下:
和解压缩不一样,解压缩出来的xml文件不可看,这里的xml都是可以看到的,在smali目录下就是源码了,如下部分截图:
因为这里混淆了代码,所有类名都用a、b、c之类的字母替代了。前面解压缩出来的dex是提供给虚拟机执行的,是字节码文件,这里输出的smali文件是apktool按照dex和虚拟机格式转换出来的,类似于汇编语言,也可以使用Smaliviewr或IDA等工具来看函数的调用地址,再配合其他工具获取控件的id,就可以一步步进行功能破解了,后面有时间再写写这部分。
2. 使用工具dex2jar
将前面解压出来的classes.dex转为jar包,如下:
这一步的输出文件是:classes-dex2jar.jar
3. 使用工具JD-GUI查看第2步的输出文件,打开jd-gui软件,然后打开这个jar包文件即可,如下图所示:
左边是app使用的包结构图,右边是随便打开的一个class文件图,可以看到,有些没被混淆的类可以看到源码,已被混淆的类调用已被a、b等字母替换。
APP的反编译查看源码步骤大概就是这样了,反编译主要是想学习别人的代码架构是怎么分配的,学习别人的长处,不要干坏事哦
聊聊Android的APK反编译的更多相关文章
- android之apk反编译
今天就来详细的讲一讲apk的反编译过程,之前自己一直没彻底搞清楚. 一.准备工作 反编译首先要准备三个工具.这三个工具都是可以百度下载的.就是下图所示的三个工具. 这三个工具是有各自作用的: (1)a ...
- Android实践--apk反编译
版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/ysjian_pingcx/article/details/25468867 Android apk反编译一 ...
- [Android逆向]APK反编译与回编译
一.先查壳,再反编译看验证首先打开.apk文件==>反编译apk(dex/配置文件/资源文件(apk反编译失败)>修改关键文件实现自己的目的>重新打包签名(无法重新打包)==> ...
- Android程序apk反编译破解方法
简短不割了,我们直接奔主题吧. 把apktool-install-windows-r05-ibot文件里的两个文件剪切到apktool1.5.1目录. 新建一个文件夹把需要破解的apk应用程序放进去. ...
- 【转】Android APK反编译就这么简单 详解(附图)
转载地址:http://blog.csdn.net/vipzjyno1/article/details/21039349 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂 ...
- Android APK反编译详解(附图)
转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...
- Android APK反编译easy 详解
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...
- Android APK反编译就这么简单 详解(附图)
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...
- 从原生APK反编译,拿到界面,用于mono for android
从原生APK反编译,拿到界面,用于mono for android 1.用apktool反编译apk,得到xxx.apk.de 2.从xxx.apk.de\res\layout 3.复制所有xml到M ...
随机推荐
- gulp常用插件
本人就职于一家互联网小公司,根据自己的项目纪录一下常用的gulp插件,项目不是很大! 文章目录 1. gulp-load-plugins 2. yargs 3. del 4. gulp-filter ...
- 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的
===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...
- .assetbundle 和.unity3d 好处
.assetbundle 资源文件 .unity3D 场景文件 xml.json 静态存储和 还原 AssetBuddle 优点:减小压缩包.资源更新.分开安装包和数据包.AssetBuddle加密 ...
- angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
在模板中直接: 在ionic中直接使用: <p class="contentwen" ng-bind-html="detial.content">& ...
- 随机添加一个Class,Class提前写好
$("").hover(function(){ var ary = ["red","green","blue",]; v ...
- ccs3中icon转换为字体的方法
小图标转换为字体有几大优点 文件小,一般50k以内 避免了加载多个icons,减少了加载次数,有利于页面优化. 兼容性很好,可以随便放大缩小,都能正常显示. 维护起来也很简单,只用找到这个字体文件(比 ...
- composer 的使用
composer是php包管理工具,非常好用!许多框架,例如zendframework都可以用它来安装. 使用起来其实是很简单的.以下以windowns操作系统为例: 把php添加到系统环境变量.(网 ...
- Maven打包附加配置文件
在build节点下增加resources. <build> <!-- 资源 --> <resources> <!-- 复制非class文件 --> &l ...
- ubuntu下编码转换工具
ubuntu打开windows下的txt或者代码文件,经常会出现乱码, ubuntu自带一种转换工具,是命令行的,下面提供一种最简单的方法进行转换 比如要转换的文件为1.txt,进入1.txt的目录 ...
- 【云计算】docker三剑客如何支持分布式部署?
This blog will explain how to create multi-container application deployed on multiple hosts using Do ...