购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 安卓逆向过程中的常用命令

本节将会介绍一些在Android逆向过程中常用的命令,有些是Linux通用的命令,有些是Android特有的命令(比如adb命令)。

2.3.1 常用Linux命令介绍

(1)cat命令

功能: 该命令用于在Shell中方便地查看文本文件的内容。

示例:

     bullhead:/sdcard/Chap02 # cat 1.txt
     roysue1

(2)echo和touch命令

功能: touch命令可以创建一个空文件;echo命令通过配合“>”或者“>>”对文件进行写操作,其中“>”为覆盖写操作、“>>”为扩展写操作。

示例:

(3)grep命令

功能: 该命令用于在shell中过滤出符合条件的输出。

示例:

(4)ps命令

功能: 该命令可输出当前设备正在运行的进程。在Android 8之后,ps命令只能打印出当前进程,需要加上-e参数才能打印出全部的进程。

示例:

(5)netstat命令

功能: 该命令输出App连接的IP、端口、协议等网络相关信息,通常使用的参数组合为-alpe。netstat -alpe用于查看所有sockets连接的IP和端口以及相应的进程名和pid,配合grep往往有奇效。

示例:

当前目的进程org.sfjboldyvukzzlpp正在进行https连接,对应的pid为21312。

(6)lsof命令

功能: 该命令可以用于查看对应进程打开的文件。

示例:

可以看到,进程pid为21312,所打开的数据库文件为cache_video.db及其对应的路径。

这里的文件不仅仅指常见的普通文件。在Linux系统中有一种说法叫“万物皆文件”,其实网络中建立的连接也可以叫作文件,因此lsof命令也可以用于与netstat命令相同的操作。

示例:

(7)top命令

功能: 该命令用于查看当前系统运行负载以及对应进程名和一些其他的信息,和之前讲的htop作用一样,只是相对来说htop更加人性化。

2.3.2 Android特有的adb命令介绍

adb(Android Debug Bridge,Android调试桥)是一种功能多样的命令行工具,可用于与设备进行通信。adb命令可用于执行各种设备操作(例如安装和调试应用)。

常用的adb命令主要有以下几种。

(1)adb shell dumpsys activity top

功能: 查看当前处于前台的Activity。

示例:

通常,上述命令会与grep命令一同使用,输出很多信息。

(2)adb shell dumpsys package <package-name>

功能: 查看包信息,包括四大组件信息以及MIME等相关信息。

示例:

可以看到,包名为org.sfjboldyvukzzlpp的入口类以及权限等相关信息都列出来了。

(3)adb shell dbinfo <package-name>

功能: 用于查看App使用的数据库信息,包括执行操作的查询语句等信息都会被打印出来。

示例:

与lsof命令打印出来的信息完全一致。

(4)adb shell screencap -p <path>

功能: 用于执行截图操作,并保存到<path>目录下。

(5)adb shell input text <text>

功能: 用于在屏幕选中的输入框内输入文字,可惜不能直接输入中文。

(6)adb shell pm命令

功能: pm命令是Android中packageManager的命令行,是用于管理package的命令,比如通过pm list packages命令可以列出所有安装的APK包名。

示例:

     root@VXIDr0ysue:~/Chap02# adb shell pm list packages
     package:com.google.android.carriersetup
     package:com.android.cts.priv.ctsshim
     package:com.google.android.youtube
     ...

pm install命令用于安装APK文件,只是这里的APK文件不是在主机目录下,而是在Android手机目录下。

示例:

     bullhead:/sdcard # ls | grep apk
     network-debug.apk
     root@VXIDr0ysue:~/Chap02# adb shell pm install  /sdcard/network-debug.apk
     Success

pm命令还有很多其他用法,比如pm uninstall命令,用于卸载Android上的应用。这里仅以pm list和pm install为例,更多用法留待读者自行探索。

(7)adb shell am命令

功能: am命令是一个重要的调试工具,主要用于启动或停止服务、发送广播、启动Activity等。在逆向过程中,往往在需要以Debug模式启动App时会使用这个命令。

对应命令格式为adb shell am start-activity -D -N <包名>/<类名>。

示例:

此时App就以Debug模式启动了,界面中会显示Waiting For Debugger,如图2-10所示。

am命令就介绍到这里,其他用法请读者自行研究。

图2-10 Debug模式启动App

其实以上所有命令也可以通过执行adb shell进入Android的shell中直接执行,只需要将开始的adb shell去掉就行。以Debug模式启动App为例,其结果是一样的。

另外,还有一些关于主机和Android交互相关的adb命令,比如:

示例:

         root@VXIDr0ysue:~/Chap02# adb install ./network-debug.apk
         Performing Streamed Install
         Success

示例: EgaRCc/aBr+ys09spFzADBp2ld082Yf1UomwH9FmL8KbYH1mwdCD1cqvRQK8YWBO

点击中间区域
呼出菜单
上一章
目录
下一章
×