apkTool是一个APK反编译工具,它拥有编译、反编译、签名等功能,对于经常DIY安卓软件、特别是对喜欢ROM美化,功能破解,修改定制的朋友来说,是必不可少的并且非常实用的一个工具。
今天给大家带来的是2.2.2版本的apktool.jar工具包,集合了批处理一键反编译功能,应该是全网最简单最好用的版本了,也是迄今为止最新的版本,兼容性不错
工具版本:
apktool2.2.2
最专业的ROM开发者社区:宅科技
本程序在使用时需要操作大量的文件,所以需要较长时间的耐心等待。如果在编译程序的过程中点击屏幕的话,容易出现程序无响应的问题。这时,只需要点击等待并耐心等待程序的重新响应即可,程序会继续完成编译工作。
首先,先反编译一下
当完成以上步骤之后,我们window +R->打开cmd窗口
1.运行 apktool 命令 出现可apktool的版本号和指导的命令
2.随便找来一个apk,尝试反编译一下,运行 apktool d -f c: est.apk -o c: est 命令,把test.apk反编译,反编译后的文件放入c盘下的test文件中
3.反编译的文件结构如下:
名称 | 存放内容 |
---|---|
assets | (未被编译)项目的assets文件夹 |
res | (未被编译)项目的res文件夹 里面可以清楚的看到values, layout, drawble,anim,mipmap文件夹 |
smali | (被编译)项目的Java文件,这里表现的不是.Java格式,是.smali格式 |
造成这个现象的原因是:
Android的assets和res文件都不会编译为二进制文件,所以反编译后,基本都是能看到它的全貌.
Android中.Java文件,在JVM编译之后变成.class文件,然后再经过Android的虚拟机Dalvik,代码编译为.smali文件
smail是另外一种语言,和汇编是有点像的,涉及寄存器操作等,下面是一个截图,对于我来说,只能是大概能看懂:
若是对smali语法有兴趣,可以去下面网址看一下,StackOverFlow上面万能网友们给出了很多学习的网址.
Every coin have two sides.这是我高中英文作文基本都会写的一句话.每个工具都是一把双刃剑,就像一枚硬币有正反两面一样.那么 强大的apktool肯定也是一样.以下属于,我个人的见解,如有不对,还望指正.
带来便利一面:
提供一个方式,去反编译优秀的软件,学习知识
smail是Dalvik的执行语言,你完全可以通过反编译去查看Java代码的smail语言,去更深入的了解程序的运行原理和流程
带来威胁一面:
发布的APK被二次打包,作为盗版产品使用,甚至恶意插入广告,病毒等,对软件公司带来损失
发布的APK被反编译,获取的有关服务器的信息,给服务器带来威胁.
通过反编译修改smail文件,减去客户端的限制,去获取不正当的利益,一般发生在游戏软件上
对于开发者来说,前者你可以不用,但是后者不得不防,于是,我们必须给自己的APK加上保护.