文档章节

浅析,反编译 Android APK流程分享!

科技创造
 科技创造
发布于 2015/07/07 12:06
字数 1093
阅读 218
收藏 20

       作为公司的技术兼产品人员,看到别人开发的优秀Android APK实在羡慕,在Android开发的过程,也很想去学习别人那些漂亮的动画和布局,或是产品逻辑等是怎么做的,所以最近学习了对APK的反编译,只做学习借鉴,提升产品竞争力,不为任何不法企图之用。
       首先下载反编译软件apktool 、dex2jar、 jd-gui对APK进行反编译

工具介绍:

        apktool :资源文件获取,可以提取出图片文件和布局文件进行使用查看,其原理详情:(http://my.oschina.net/1590538xiaokai/blog/467830

         dex2jar:将apk反编译成java源码(classes.dex转化成jar文件)

         jd-gui:查看APK中classes.dex转化成出的jar文件,即源码文件

反编译流程:

        一、apk反编译得到程序的源代码、图片、XML配置、语言资源等文件

        下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令:apktool.bat d -f test.apk test(命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktool.bat d -f [apk文件 ] [输出文件夹])

说明获取成功,之后发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。

        如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool.bat b test(你编译出来文件夹)便可,效果如下:之后在之前的test文件下便可以发现多了2个文件夹:build dist(里面存放着打包出来的APK文件)

      二、Apk反编译得到Java源代码

       下载上述工具中的dex2jar和jd-gui ,解压将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,在命令行下定位到dex2jar.bat所在目录,输入dex2jar.bat classes.dex,效果如下:在改目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件便可以看到源码了,效果如下:被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名)。


       三、 图形化反编译apk

        上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk通过反编译,你可以获知该应用用到了什么第3方的库文件,它的代码是如何编写的等等。

       当然,有些APK为了避免被他人反编译,所以进行了代码混淆。因为很多不法分子盗版一款APP就是从反编译开始。所以从移动应用安全角度讲,为了避免他人了解自己的APK的布局和逻辑,的确应该做一些反编译的保护措施,尤其是避免被竞争对手看到。如果开发者不想被他人反编译,提高APK的安全性,可以使用爱加密进行加密保护。我也做过测试,使用爱加密后,原有的代码程序都被隐藏了,没法再看到源代码。

       作为一个普通移动开发者,反编译的目的只是了解他人应用程序的大体思路,对开发工作有益无害。

© 著作权归作者所有

科技创造
粉丝 37
博文 199
码字总数 174505
作品 0
徐汇
程序员
私信 提问
加载中

评论(2)

天命剑主
天命剑主

引用来自“请叫我赵小宝”的评论

mac, 搞过没

搞过一点点
请叫我赵小宝
请叫我赵小宝
mac, 搞过没
浅析,反编译 Android APK流程分享!

作为公司的技术兼产品人员,看到别人开发的优秀Android APK实在羡慕,在Android开发的过程,也很想去学习别人那些漂亮的动画和布局,或是产品逻辑等是怎么做的,所以最近学习了对APK的反编译...

科技创造
2015/07/07
4.2K
5
(Mac)反编译Android APK详细操作指南[ApkTool,dex2jar,JD-GUI]

早在4年前我曾发表过一篇关于《Android开发之反编译与防止反编译》的文章,在该文章中我对如何在Windows平台反编译APK做了讲解,如今用Mac系统的同学越来越多,也有很多朋友问我能否出一篇关...

CrazyCodeBoy
2018/05/11
0
0
Android的反编译和代码混淆

系列文章: Android的反编译和代码混淆 Android的打包签名 Android的多渠道打包 前言 包括以下内容 要反编译apk需要下面3个工具 反编译资源文件 反编译类文件 代码混淆 要反编译apk需要下面3...

跳动的松鼠
2017/11/21
0
0
Android APK用Apktool反编译后和回编签名的问题

找了好久,都没找到反编译安卓软件后回编的签名工具,现在分享一个,如果已经有人发布了就当补充吧 先在windows电脑上安装好java程序和配置好环境 下载工具apktool: http://pan.baidu.com/s...

海蓝
2012/11/09
7.8K
0
转载分享:Android APP二次打包操作步骤介绍

看到好的技术教程就想转载一下,不喜勿喷!谢谢配合,仅供菜鸟学习研究,不要做坏事哦\(^o^)/~ 关于Android APP 二次打包现象已经屡见不鲜,为何“打包党”就吃准了Android平台,二次打包的操...

科技创造
2015/08/26
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

浅谈Command命令模式

一、前言 命令也是类,将命令作为一个类来保存,当要使用的时候可以直接拿来使用,比如脚本语言写出的脚本,只需要一个命令就能执行得到我们想要的需要操作很长时间才能得到的结果。这是一个...

青衣霓裳
3分钟前
1
0
Less导入指令

在标准CSS中,@import 规则必须位于所有其他类型的规则之前。但是Less.js不在乎我们将 @import 语句放在什么位置。 @import 伪指令常用于在代码中导入文件,它将Less 代码分布在不同的文件上...

凌兮洛
4分钟前
1
0
【apk】空包签名

命令语法 jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias] 例 子: jarsigner -verbose -keystore F:\签名\laidianyi_customer.keystore -signedjar F:\......

Agnes2017
7分钟前
2
0
虚拟化的操作技巧!

从物理基础设施迁移到虚拟基础设施时,虚拟环境的设计和布局应模仿物理做法,企业级虚拟化软件允许创建虚拟交换机,虚拟局域网(VLANS)和私有网络可以协助迁移,分析物理和逻辑网络图,复制...

青果云小潘
11分钟前
2
0
SEO网站运营助手

SEO网站运营助手有哪些功能? 提交: 百度链接主动提交 + 熊掌号周推(支持500万条提交额,所以合并在一起提交) 更新: 网站内容改动后,对于已收录的链接,可以选择更新 查询: 对百度收录判断...

NoCome
13分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部