Android-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 肯定也是一样.以下属于,我个人的见解,如有不对,还望指正.

带来便利一面:

  • 提供一个方式,去反编译优秀的软件,学习知识
  • smali 是 Dalvik 的执行语言,你完全可以通过反编译去查看 Java 代码的 smali 语言,去更深入的了解程序的运行原理和流程

带来威胁一面:

  • 发布的 APK 被二次打包,作为盗版产品使用,甚至恶意插入广告,病毒等,对软件公司带来损失
  • 发布的 APK 被反编译,获取的有关服务器的信息,给服务器带来威胁.
  • 通过反编译修改 smali 文件,减去客户端的限制,去获取不正当的利益,一般发生在游戏软件上

对于开发者来说,前者你可以不用,但是后者不得不防,于是,我们必须给自己的 APK 加上保护.

至于怎么加,表示最近正在了解和学习这方面的知识_,也许下篇博客会讲,我会回来补上链接的.

链接来了:Android-安全-签名验证让二次打包变的更难


欢迎关注个人微信公众号「浅浅同学的开发笔记」,最新的博客,好玩的事情,都会在上面分享,期待与你共同成长。

在这里插入图片描述

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
这款APK反编译工具(ApkToolkit)拥有编译、反编译、签名等功能,对于经常DIY安卓软件的朋友来说,是必不可少的工具。能够支持WIN7系统,但是这款安卓apk反编译工具暂不支持WIN8系统。 APK 反编译工具 ApkToolkit 中文版APK 反编译工具 ApkToolkit 中文版 功能介绍 1、反编译.apk 对.apk文件进行反编译。 2、重建.apk 根据反编译.apk得到目录重建.apk文件。 3、签名.apk 对.apk文件进行签名。 4、优化.apk 对.apk文件进行优化。 5、framework-res.apk工具 实现framework-res.apk的安装和管理。 6、.apk转.jar 将.apk文件转换为.jar文件。 7、.dex转.jar 将.dex文件转换为.jar文件。 插件版本: Java版本:1.7.0_60 Aapt版本:0.2 Apktool版本:2.0.0-dirty Dex2Jar版本:translator-0.0.9.15 使用说明 1、反编译.apk 拖拽【XXX.apk】程序到”反编译.apk”按钮前的输入区,点击”反编译.apk”按钮, 会在文件【XXX.apk】的同级目录下生成文件夹【XXX】。 2、重建.apk 把第一步得到的文件夹【XXX】拖拽到”重建.apk”按钮前面的输入区,点击”重建.apk”按钮, 会在文件夹【XXX】的同级目录下生成未签名的程序【XXX.R.apk】。 3、签名.apk 把第二步得到的程序【XXX.R.apk】拖拽到”签名.apk”按钮前的输入区,点击”签名.apk”按钮, 会在文件【XXX.R.apk】的同级目录下生成已经签名好的程序【XXX.RS.apk】。 4、优化.apk 把第三步得到的程序【XXX.RS.apk】拖拽到”优化.apk”按钮前的输入区,点击”优化.apk”按钮, 会在【XXX.RS.apk】的同级目录下生成已经优化好的程序【XXX.RSO.apk】。 5、framework-res.apk工具 拖拽【XXX.apk】文件到”安装”按钮前的输入区,点击”安装”按钮,会生成相应的apk,编译对某 些APK程序的反编译和重建。 点击”查看”,即可在资源管理器中看到已经安装的framework-res.apk,可对其进行管理或删除。 6、.apk转.jar 拖拽【XXX.apk】文件到”.apk转.jar”按钮前的输入区,点击”.apk转.jar”按钮, 会在文件【XXX.apk】的同级目录下生成文件【XXX_dex2jar.jar】。 7、.dex转.jar 拖拽【XXX.dex】文件到”.dex转.jar”按钮前的输入区,点击”.dex转.jar”按钮, 会在文件【XXX.dex】的同级目录下生成文件【XXX_dex2jar.jar】。 注意事项 1、使用环境:首先必须安装JDK 6/7。 2、使用“反编译.apk”功能时,路径中不能出现任何中文字符或全角字符! 3、使用“重建.apk ”功能时,路径中不能出现任何中文字符或全角字符!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值