如何开始对Android应用的逆向分析?

本文是我的关于如何开始Android逆向系列文章的第一部分。在文末提供了一个文档,你可以根据该文档说明部署同我一样的实验环境。

在了解android应用的逆向之前,你必须对android平台及其架构和android应用程序的构建块(组件)已有了一个较好的理解。如果你并不了解这些,那么我建议你先参阅以下链接,然后再继续浏览本文。

  • Android平台架构
  • Android应用程序及其组件
  • Android应用程序及其架构(PPT)

我当前的实验室环境如下:

  • 主机系统为windows,其中安装了virtual box 和 genymotion
  • virtual box 和 genymotion的设备都处于桥接模式
  • Android 4.4 (kitkat API version 19)
  • 在virtual box中,kali linux也同时运行(与genymotion一起)

注:该设置并非固定,你可以根据自身需求环境进行调整。例如,你也可以使用kali linux作为你的主机系统,并在上面安装genymotion。

在正式开始我们的逆向之旅前,我想先向大家介绍一下名为adb(android debugger bridge)的工具/服务器。它可以帮助我们连接,获取数据并将指令传递给远程Android设备(调试模式可以通过设备设置中的开发者模式打开)。当前情况下,我们将使用genymotion设备(虚拟设备)。

对于安卓应用的逆向,这里有一个非常好的可供我们学习和练习的apk – DIVA ( Damn insecure and vulnerable mobile Application )。这是一个由Payatu的安全分析师开发的脆弱安卓应用。下面我们也将以该应用为例:

首先,让我们来启动genymotion设备:

  • 在Windows/Linux中搜索Genymotion应用
  • Start genymotion

选中你想要启动的设备,然后点击Start按钮。

如果你以上步骤正确执行,则应该能看到类似以下的界面:

可以看到Android设备已经启动,现在我们来启动虚拟机中的kali linux。步骤如下:

  • 启动virtual box
  • 从中启动kali虚拟机

注:这两个虚拟机处于桥接模式。如果有DHCP服务器,则需要连接到路由器或网络。

现在两台机器都已启动,下面让我们来检查下kali和Android设备之间的连接情况。为此,我们需要获取Android设备的IP地址。

  • 导航到设置菜单
  • 单击WiFi选项
  • 你会在网络中看到WiredSSID
  • 长按“WiredSSID”选项
  • 你会看到如下所示界面

获取IP后我们回到kali终端,并键入以下命令检查连接情况:

  1. adb connect 192.168.20.74 

如果命令正确执行,你将会看到以下输出。

现在让我们通过执行以下命令,来验证设备是否真正连接:

  1. adb devices 

 

通过确认我们得知设备已连接到IP地址192.168.20.74和5555端口(adb默认的连接端口为5555)。

现在,我们就可以在Android设备上执行不同的adb命令了。通过-h选项查看可用参数:

  1. adb -h 

 

在帮助信息中会为你列出所有可用的参数选项。下面是一些在逆向中时常会用到的命令:

ADB 调试

  1. adb devices – Lists all the connected devices  
  2. adb forward – used for forwarding socket connections  
  3. adb kill-serve 

无线

  1. adb connect – connects to the remote device 
  2. adb usb – connects to the USB attached device 

包管理器

  1. adb install – install a package adb uninstall – uninstall a package adb shell pm list packages – used for displaying lists of packages installed adb shell pm path – used for displaying package path on device adb shell pm clear 

文件管理器

  1. adb pull – used for pulling / downloading a file adb push – used for pushing / uploading a file adb shell ls – used for displaying list of files and directories in the current directory adb shell cd – used for changing the directory adb shell rm- used for removing a file adb shell mkdir – used for creating a directory adb shell touch – used for creating a file adb shell pwd – used for displaying the current path adb shell cp – used for copying a file adb shell mv – used for moving a file 

网络

  1. adb shell netstat – used for displaying the statistics for network connection adb shell ping – used for pinging a host / IP adb shell netcfg adb shell ip 

Logcat

  1. adb logcat adb shell dumpsys adb shell dumpstate 

截图

  1. adb shell screencap adb shell screenrecord 

系统

  1. adb root adb sideload adb shell ps adb shell top adb shell getprop adb shell setprop 

在了解adb命令后,下面我们来安装DIVA(Android应用程序)。

注:请将该应用下载安装至你的kali机器上,因为所有的adb命令都将从kali中触发。

执行以下命令安装该应用:

  1. adb install diva-beta.apk 

 

现在,我们已经完成了diva-beta.apk的安装。让我们来验证下该应用是否已在我们的设备中成功安装。

可以看到应用程序已被正确安装,并可在设备的菜单中使用。

让我们通过单击该应用程的图标来启动它。你将看到如下启动界面:

当前,DIVA为我们准备了以下挑战:

不安全的日志记录 硬编码问题 – 第1部分 不安全的数据存储 – 第1部分 不安全的数据存储 – 第2部分 不安全的数据存储 – 第3部分 不安全的数据存储 – 第4部分 输入验证问题 – 第1部分 输入验证问题 – 第2部分 访问控制问题 – 第1部分 访问控制问题 – 第2部分 访问控制问题 – 第3部分 硬编码问题 – 第2部分 输入验证问题 – 第3部分

我们将逐一解决上述挑战,让你了解Android应用中的不同漏洞。对于第一项挑战,即不安全日志记录,我们可以通过adb命令来检查diva应用的日志记录。命令如下:

  1. adb logcat 

如果命令正确执行,你将会看到如下所示内容:

可以看到这里的日志记录非常的杂乱,因为它显示了许多不同的日志记录数据(整个设备)。为了让我们看起来更加清晰,我将使用grep命令。但在此之前,我们需要首先获取该应用程序包的进程ID。命令如下:

  1. adb shell ps | grep diva 

如果命令正确执行,你将会看到如下所示内容:

adb shell是用于通过adb发送任何shell指令的命令;ps作为shell指令发送,ps的输出提供给grep命令。Grep是一个非常棒的用于搜索相关字符串的工具,在本例中我们搜索的字符串为“diva”。

从输出结果中我们得知,diva的pid为1654,包名称为“jakhar.aseem.diva”

现在,让我们以组合的形式使用logcat和grep命令:

  1. adb logcat | grep 1654 

你将看到与该特定进程(即diva)相关的所有日志。

实验环境设置文档

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/148800.html<

(0)
管理的头像管理
上一篇2025-03-12 07:56
下一篇 2025-03-12 07:58

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注