最近在学习如何对一个APK进行反编译,当然首要前提就是的得到应用的APK,这次我想要学习的是布卡漫画,那么我在酷安上面获取布卡漫画的APK:

成功获取到APK后,我们就开始正式反编译了。这里我们用到的工具是:

APKTool:将Android应用程序反编译成Smali文件。

Dex2Jar-2.0:将Android应用程序反编译为Java文件。

JD_GUI_windows-1.4.0:读取Java源文件。

Drozer-2.3.4:Android应用程序评估框架。

第一步:直接解压APK文件(我将apk的后缀名直接改为.zip,在解压打开):

在这里我们可以看到经过解压后得到的文件里面有了很多东西,下面我们先补充一下大多APK都有的文件的内容里面都是些什么:

assets:配置文件,放置一些本地资源,例如本地html,可以通过使用AssetManager检索。

kotlin:这个文件里面包括了注解、反射等。

lib:存放特定平台使用的编译后的.so文件,每一个子文件夹对应一个特特定的平台,例如armeabi,armeabi-v7a,armeabi-v8a,x86,x86_64,和mips等。

res:存放没有被编译到的resourse.arsc文件中的资源文件。

META-NIF:包含CERT,RSA,CERT.SF,MANIFEST.MF,存放的签名信息,用于保证系统的安全性和APK文件的完整性。

resources.arsc:编译后的二进制资源文件,存放res/values目录下的所有XML内容,打包工具对XML内容进行提取,编译为二进制,斌进行分类,其中,xml内容包含了不同语言的string和styles,同时还包含没有被直接打包至resource.arsc文件的其他文件的路径,例如布局文件和图片文件。

classes.dex/classes2.dex:编译后的字节码文件,能够被Dalvik/ART理解。

第二步:得到AndroidManifest.XML文件

保证上面所用软件都安装好的情况下,在apk所在文件路径下打开命令行窗口,输入命令:

那么我们就得到了一个新的文件:

下面打开新得到的文件:

我使用Notepad++打开AndroidManifest.xml文件:

这样我们就可以看到布卡漫画这个应用的清单文件了,可以看到里面的那个是启动activity,这个应用所申请的权限等等,当然我们对一个apk的安全性测试也包括权限是否得当。

第三步:查看源代码

首先我们需要将第一步解压后得到的classes.dex文件、classes2.dex文件通过工具Dex2Jar-2.0来转换为java文文件:

1、将classes.dex文件、classes2.dex复制到Dex2Jar-2.0文件目录下。

2、在Dex2Jar-2.0文件目录下打开命令行窗口。

3、通过如下命令(这里两个文件就操作两次):

4、3操作后我们看到Dex2Jar-2.0文件目录下多了classes-dex2jar.jar、classes2-dex2jar.jar两个文件

5、通过工具JD_GUI_windows-1.4.0打开classes-dex2jar.jar、classes2-dex2jar.jar文件

当然我们可以看到这里的代码是经过Android Studio混淆打包的,很多都是以简易字符替换。

第四步:对APK进行安全检测

我们通过第二步得到的AndroidManifest.xml查看到应用的入口activity是cn.ibuka.manga.ui.ActivityStartup:

同时我们看到 application里面 android:allowBackup=”true”,这个属性设置为true将会有很大的问题,外部可以通过adb backup 或者abd restore 进行备份。所以安全起见,allowBackup应设置为false。

下面我们通过Drozer-2.3.4对APK进行基本的框架评估:

1、将apk安装到手机或者模拟器上。

2、将Drozer里面的agent.apk安装到手机或者模拟器上。

3、通过adb进入模拟器的root权限下:

4、打开终端上的agent.apk,并开启:

5、我们去到Drozer目录下,打开命令行窗口,通过命令adb forward tcp:31415 tcp:31415,./drozer.bat console connect去连接终端:

6、我们先查看布卡漫画APK的攻击面,使用的命令是 run app.apckage.attacksurface 包名

android 安装包反编译,Android逆向之反编译APK和安装包漏洞解析相关推荐

  1. android将彩图转为黑白_Android逆向反编译代码注入APK过程思路分析

    一.名称解释 逆向 - 是一种产品设计技术再现过程,从可运行的程序系统出发,运用解 密.反汇编.系统分析等多种计算机技术,对软件的结构.流程.算法. 代码等进行逆向拆解和分析,推导出软件产品的源代码. ...

  2. 【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 )

    文章目录 一.AAPT2 资源编译工具 二.resources.arsc 资源映射表 工作机制 三.参考资料 一.AAPT2 资源编译工具 资源的编译 , 生成 R.java 文件 , 都是通过 AA ...

  3. Android应用逆向——分析反编译代码之大神器

    如果说使用dex2jar和JD-GUI获得了一个APP反编译后的JAVA代码,再结合smali代码调试器来进行调试还不够爽,不够畅快的话,下面将介绍一个帮助分析代码执行流程的大神器.这个神器优点很多, ...

  4. Android 安装包测试

    测试点: 1.能否反编译代码. 2.安装包是否签名. 3.完整性校验. 4.权限设置检查. 一.能否反编译代码 前言: 一些程序开发人员会在程序源代码中硬编码一些敏感信息,例如密码等.为了避免这些问题 ...

  5. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )

    文章目录 一.resources.arsc 资源映射表 混淆 二.resources.arsc 资源映射表二进制格式分析 三.参考资料 资源混淆时 , 需要修改混淆 resources.arsc 资源 ...

  6. 【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )

    文章目录 一.开启资源压缩 二.启用严格模式的资源引用检查 三.自定义保留/移除资源配置 四.资源压缩效果 五.完整配置 1.keep.xml 配置 2.build.gradle 构建脚本 六.参考资 ...

  7. 【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )

    文章目录 一.动态库打包配置 二.NDK 完整配置参考 三.参考资料 一.动态库打包配置 在 build.gradle 构建脚本中 , 配置 ndk 编译的动态库 CPU 架构类型 ; 在 " ...

  8. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )

    文章目录 一.Android 5.0 以下的矢量图方案 二.矢量图生成为 PNG 图片 三.完整的 build.gradle 构建脚本 四.编译效果 五.参考资料 一.Android 5.0 以下的矢 ...

  9. 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.修改 7zr 交叉编译脚本 Android.mk 二.完整的 7zr 交叉编译脚本 Android.mk 三.交叉编译 lib7zr.a 静态库 四.Android Studio 导入 ...

  10. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )

    文章目录 一.JNI 中 main 函数声明 二.命令字符串切割并传入 main 函数 三.完整代码示例 1.完整 jni 代码 2.完整 java 代码 3.执行结果 四.参考资料 前置博客 : [ ...

最新文章

  1. Python和OpenCV环境配置
  2. 微服务架构下,静态数据通用缓存机制!
  3. 数据结构与算法 / 排序算法(2)
  4. 【Linux系统编程】进程介绍
  5. 【全球AI人才排行榜】美国第一,中国仅排名第7
  6. The compiler compliance specified is 1.7 but a JRE
  7. 解决spring整合mybatis时错误 ‘org.mybatis.spring.mapper.MapperScannerConfigurer#0‘
  8. c# out原理 ref_移植贪吃蛇——从C#到C++
  9. unittest测试框架详谈及实操(四)
  10. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用36
  11. 南非世界杯火热角逐 金山网盾开启搜索保护
  12. free bsd x修改UTC-SCT
  13. android+开发平板应用,Android平板应用开发教程
  14. 【2021最新版】Linux面试题总结(48道题含答案解析)
  15. 使用SAX读取XML文件
  16. 爬虫:爬取网页表格内容,写入scv文件并绘图
  17. MySQL DATE_SUB() -- 从日期减去指定的时间间隔
  18. 清华大学王观堂先生纪念碑铭----陈寅恪
  19. Word2vec浅显的理解
  20. 安装Neo4j图型数据库

热门文章

  1. 电子通信协议之CAN总线协议篇
  2. isv支付宝小程序三方模板开发快速指南
  3. php包含大马执行,分析一个常见的php大马并且解码过程
  4. pgadmin3连接mysql_如何使用pgAdmin3连接到Ubuntu上的远程PostgreSQL数据库?
  5. 深度报告:移动边缘计算,站在5G“中央”
  6. CxImage功能强大的图形处理程序
  7. html5经典教程,40个经典HTML5实例教程.pdf
  8. Word制作学生点名册表格模板
  9. 【智能优化算法】基于混合布谷鸟算法和灰狼算法求解带单目标优化问题附matlab代码
  10. Android模拟点击屏幕,实现按键精灵点击屏幕功能