1、概述

APP安全性一般可以从以下几方面进行考量:

以及其他一些杂项(或者通用并不局限于APP的安全项):

本文讨论反编译问题。

2、APK反编译

安卓开发的APP,如果不做任何处理是很容易被反编译的。也就是说,一个APP的源代码可以轻易的被泄露。

对于商业软件而言,这当然是不可接受的。而作为测试团队,应该确保自己的产品能够妥善抵御反编译。

测试可以可以自己尝试反编译来进行验证,这是一种渗透性测试思维。

2.1 反编译工具

  • apktool

  作用:用于提取APK中的资源文件,比如图片文件和布局文件等。

  下载:https://bitbucket.org/iBotPeaches/apktool/downloads/

  • dex2jar

  作用:将apk反编译成jar文件

  下载:https://sourceforge.net/projects/dex2jar/files/

  • jd-gui

  作用:查看dex2jar反编译得到的jar包中的源码

  下载:http://java-decompiler.github.io/

 

将以上工具包下载并放置到同一文件夹,解压其中的ZIP包。将待反编译的APK也放置进同一文件夹(方便起见)。

若官网下载有困难,以下是工具的网盘地址:

链接:https://pan.baidu.com/s/18YGxwVX9KNnRU3rm3qvOUg
提取码:zskt

2.2 apktool提取资源文件

打开windows命令行,CD进入上一步中的目录。

第一步使用apktool进行资源文件提取,命令语法:

java -jar [apktool_2.3.4.jar] d -f [apk地址] -o [输出目录]

执行效果:

C:\Users\Administrator\Desktop\APKrecompile>java -jar apktool_2.3.4.jar d -f 检测包09111134.apk -o
I: Using Apktool 2.3. on 检测包09111134.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\ADMINI~\AppData\Local\Temp\.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

执行完毕后,得到APK反编译提取的资源文件:

2.3 dex2jar反编译得到Jar包

将APK后缀名改写为ZIP,打开此ZIP文件,提取出其中的class.dex:

这个文件实际上就是java源文件使用dx工具打包而来的,而dex2jar(dex to jar)顾名思义就是将dex文件转换回jar

将classes.dex放置进第一步准备好的dex2jar文件夹中。

命令行中,进入该文件夹,输入命令:

d2j-dex2jar classes.dex

执行效果:

d2j-dex2jar classes.dex
dex2jar classes.dex -> .\classes-dex2jar.jar

执行完毕后,得到反编译而来的classes-dex2jar.jar文件:

2.4 jd-gui查看jar文件

打开第一步准备的jd-gui.exe(无需安装)。

将第三步中得到的classes-dex2jar.jar拖拽进打开的界面中,即可查看jar包中源代码了。

3、防御和检测

现今对于APK反编译的应对手段主要有以下几种:

  • 代码混淆技术
  • 签名比对技术
  • 动态库技术
  • 动态加载技术
  • 第三方加固

作为审计和测试方,应该结合渗透性测试和代码审计,确定被测的产品已经加入了妥善的防御措施。

实践APP安全性检测(一):APK反编译的更多相关文章

  1. 爬虫app信息抓取之apk反编译抓取

    之前也抓过一些app,数据都比较好取,也没有研究的太深,毕竟还有android 模拟器+ appium 的方法.直到遇见了一款app ,具体名字就不说了,它安装在模拟器上竟然打不开 !!第一次遇见上网 ...

  2. Android实践--apk反编译

    版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/ysjian_pingcx/article/details/25468867 Android apk反编译一 ...

  3. 【安全性测试】利用反编译查看对应activity的方法采用hook技术绑定劫持_入门

    本次主要为了研究手机端的安全性而写的一篇文章,在基于自己对手机安全性的研究下,想到了这些工具之间的结合,当然这也算是第一次对手机安全研究勇敢地踏出一步,也不知道是否成功,还是准备撞南墙撞到底吧! 使用 ...

  4. Android APK反编译(一)

    apk是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP.反编译apk则是将该安卓工程的源码.资源文件等内容破解出来进行分析. 一.APK反编译基本原理 1.APK分析 apk文 ...

  5. Android开发--ZZ:Android APK反编译详解(附图)

    最近看了很多app的界面和交互非常棒,想学习下他们的源码,简单加压apk文件得到的资源文件和源码都不可读 它们都是编译后的文件,在网上搜索了下,发现这篇blog提到的工具都非常好用~ 文章原地址:ht ...

  6. Android APK反编译详解(附图)

    转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...

  7. 从原生APK反编译,拿到界面,用于mono for android

    从原生APK反编译,拿到界面,用于mono for android 1.用apktool反编译apk,得到xxx.apk.de 2.从xxx.apk.de\res\layout 3.复制所有xml到M ...

  8. Android开发学习总结(六)—— APK反编译

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  9. Android APK反编译详解(附图)(转)

    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...

随机推荐

  1. 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用

    内容不转载了,加上链接https://blog.csdn.net/u013565368/article/details/53081195?_t=t

  2. 地图POI类别标签体系建设实践

    导读 POI是“Point of interest”的缩写,中文可以翻译为“兴趣点”.在地图上,一个POI可以是一栋房子.一个商铺.一个公交站.一个湖泊.一条道路等.在地图搜索场景,POI是检索对象, ...

  3. 初学HTML5做的小知识点

    新增的HTML5标签 语义化标签 :<header> 头标签      <nav> 导航标签      <section> 表示文档的结构.栏目      < ...

  4. Android Studio启动模拟器失败

    启动Android Studio的模拟器报“Emulator: Process finished with exit code -1073741819 (0xC0000005)”错误教程: 1.进入该 ...

  5. Unity进阶:用AssetBundle和Json做了一个玩家登陆界面

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  6. 设计模式(C#)——06桥接模式

    推荐阅读:  我的CSDN  我的博客园  QQ群:704621321       在早先,几乎每个手机的充电器接口都是不同的.每个型号的手机都有一个充电器,此时我们把充电器作为一个抽象类,抽象类中提 ...

  7. LeetCode115不同的子序列

    题目说明在这里就不贴出来了,相信打开这篇文章的小伙伴们肯定都是在刷LeetCode的. 一开始我的想法是dfs+回溯,结果运行超时,一开始我就觉得可能会超时,结果不出所料[手动笑哭]. 后来我想了下d ...

  8. Fire Balls 05——子弹的命中及后续效果

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  9. [翻译] C# 8.0 接口默认实现

    原文: Default implementations in interfaces 随着上周的 .NET Core 3.0 Prview 5 和 Visual Studio 2019 version ...

  10. Luogu-P2512 [HAOI2008]糖果传递 贪心

    传送门:https://www.luogu.org/problemnew/show/P2512 题意: 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1 ...