欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

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

来源:本站整理 作者:佚名 时间:2018-08-20 TAG: 我要投稿

本文是我的关于如何开始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终端,并键入以下命令检查连接情况:
adb connect 192.168.20.74
如果命令正确执行,你将会看到以下输出。

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

通过确认我们得知设备已连接到IP地址192.168.20.74和5555端口(adb默认的连接端口为5555)。
现在,我们就可以在Android设备上执行不同的adb命令了。通过-h选项查看可用参数:
adb -h

在帮助信息中会为你列出所有可用的参数选项。下面是一些在逆向中时常会用到的命令:
ADB 调试
adb devices – Lists all the connected devices
adb forward – used for forwarding socket connections
adb kill-serve
无线
adb connect – connects to the remote device
adb usb – connects to the USB attached device
包管理器
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
文件管理器
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
网络
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
adb logcat adb shell dumpsys adb shell dumpstate

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载