apktool
前言
一直听说过反编译,感觉很高大上,一直没自己用过,今天因缘巧合之下,终于要开始逐渐认识,了解和学习一下反编译了~先给自己说下加油,鼓励一下下
apktool的下载和安装
apktool 下载地址:
Apktool [![Join the chat athttps://gitter.im/iBotPeaches/Apktool]
apktool 安装教程:
这个是上面网站上给出的安装使用文档:
Apktool - How to Install
注:以上都需科学上网.
首先,先反编译一下
当完成以上步骤之后,我们 window +R->打开 cmd 窗口
1.运行 apktool
命令 出现了 apktool 的版本号和指导的命令
2.随便找来一个 apk ,尝试反编译一下,运行 apktool d -f c:\test.apk -o c:\test
命令,把 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 文件
smali 是另外一种语言,和汇编是有点像的,涉及寄存器操作等,下面是一个截图,对于我来说,只能是大概能看懂:
若是对 smali 语法有兴趣,可以去下面网址看一下,StackOverFlow 上面万能网友们给出了很多学习的网址.
What’s the best way to learn Smali (and how/when to use Dalvik VM opcodes)?
然后,想想反编存在的意义在哪里?
Every coin have two sides.这是我高中英文作文基本都会写的一句话.每个工具都是一把双刃剑,就像一枚硬币有正反两面一样.那么 强大的 apktool 肯定也是一样.以下属于,我个人的见解,如有不对,还望指正.
带来便利一面:
带来威胁一面:
- 发布的 APK 被二次打包,作为盗版产品使用,甚至恶意插入广告,病毒等,对软件公司带来损失
- 发布的 APK 被反编译,获取的有关服务器的信息,给服务器带来威胁.
- 通过反编译修改 smali 文件,减去客户端的限制,去获取不正当的利益,一般发生在游戏软件上
对于开发者来说,前者你可以不用,但是后者不得不防,于是,我们必须给自己的 APK 加上保护.
至于怎么加,表示最近正在了解和学习这方面的知识^_^,也许下篇博客会讲,我会回来补上链接的.
链接来了:Android-安全-签名验证让二次打包变的更难
相关阅读
学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都
总结的反编译流程,查看如下流程: 工具介绍来看看呗(3个) apktool 将apk安装包解析成能看懂的资源文件dex2jar 将classes.dex打成jar
Android apk的反编译工作,让自己的app随便进入手机内的
反编译的代码: 1、反编译代码首先去https://sourceforge.net/projects/dex2jar/files/下载一个dex2jar这个工具,目前的最新版本时2.
Java反编译工具使用对比,最好用的Java反编译工具 --- J
Java反编译工具使用对比,最好用的Java反编译工具 --- JD-GUI、XJad一、前言1、什么是反编译?大家都知道,将源代码转换成二进制执行代
大多商业软件,会对程序进行加密、加壳等安全措施以防范软件被破解,从而使得反编译越来越难。反编译是一个对目标可执行程序进行逆向