- 对本书的赞誉
- 前言
- 基础篇
- 第 1 章 Android 中锁屏密码加密算法分析
- 第 2 章 Android 中 NDK 开发
- 第 3 章 Android 中开发与逆向常用命令总结
- 第 4 章 so 文件格式解析
- 第 5 章 AndroidManifest.xml 文件格式解析
- 第 6 章 resource.arsc 文件格式解析
- 第 7 章 dex 文件格式解析
- 防护篇
- 第 8 章 Android 应用安全防护的基本策略
- 第 9 章 Android 中常用权限分析
- 第 10 章 Android 中的 run-as 命令
- 第 11 章 Android 中的 allowBackup 属性
- 第 12 章 Android 中的签名机制
- 第 13 章 Android 应用加固原理
- 第 14 章 Android 中的 so 加固原理
- 工具篇
- 第 15 章 Android 逆向分析基础
- 第 16 章 反编译神器 apktool 和 Jadx
- 第 17 章 Hook 神器 Xposed
- 第 18 章 脱壳神器 ZjDroid
- 第 19 章 Native 层 Hook 神器 Cydia Substrate
- 操作篇
- 第 20 章 静态方式逆向应用
- 第 21 章 动态调试 smali 源码
- 第 22 章 IDA 工具调试 so 源码
- 第 23 章 逆向加固应用
- 第 24 章 逆向应用经典案例分析
- 第 25 章 Android 中常见漏洞分析
- 第 26 章 文件加密病毒 Wannacry 样本分析
3.3 shell 命令
我所说的 shell 命令运行的前提是先运行 adb shell,而这些命令和非 shell 命令都是互通的,所谓互通就是要想在设备中运行 shell 命令,就优先运行 adb shell 一下。比如查看当前应用信息,可以这么做:
也可以直接在外部运行,比如清空应用数据:
1.run-as
说明:可以在非 root 设备中查看指定 debug 模式的包名应用沙盒数据。
用法:run-as[package name]
案例:run-as cn.wjdiankong.demo
后面章节会详细介绍这个命令的原理。在开发中有时候对一个非 root 手机想看 debug 应用的沙盒数据,那么这个命令就可以帮助进行这项操作了。
2.ps
说明:查看设备的进程信息,或者指定进程的线程信息。
用法:ps|grep 过滤内容
ps-t[pid]查看 pid 对应的线程信息
案例:
这个命令的重要程度不必多说,可以结合 grep 进行信息过滤。
3.pm clear
说明:清空指定包名应用的数据。
用法:pm clear[packagename]
案例:pm clear cn.wjdiankong.demo
有时候想清空一个应用的数据,可能需要去设置页面进行操作。可以不用那么麻烦,直接用这个命令即可。
4.pm install
说明:安装设备中的 apk 文件,功能和 adb install 一样。
用法:pm install[apk 文件]
案例:
这个命令与 adb install 命令一样。
5.pm uninstall
说明:卸载设备中的应用,功能与 adb uninstall 一样。
用法:pm uninstall[packagename]
案例:
这个命令和 adb uninstall 命令一样。
6.am start
说明:启动一个应用。
用法:am start-n[包(package)名]/[包名].[活动(activity)名称]
案例:
注意:可以用 debug 方式启动应用(am start-D-n…)。特别在反编译调试应用的时候,可能需要用 debug 方式启动应用。
7.am startservice
说明:启动一个服务。
用法:am startservice-n[包(package)名]/[包名].[服务(service)名]
案例:
和上面命令类似,启动服务。
8.am broadcast
说明:发送一个广播。
用法:am broadcast-a[广播动作]
案例:
和上面的命令类似,发送一个广播。有时候定义了一个广播,可能需要测试,就可以借助这个功能模拟发送一个广播。
9.netcfg
说明:查看设备的 ip 地址。
用法:netcfg
有时候想查看设备的 ip 地址,去设置页面太费劲了,可以直接用这个命令即可:
10.netstat
说明:查看设备的端口号信息。
用法:netstat
有时候想查看设备的端口号信息,这个命令也是非常重要的,例如:
11.app_process
说明:运行 Java 代码。
用法:app_process[运行代码目录][运行主类]
案例:
这个命令主要用于 Android 中一些特殊开发场景中,想启动一个 jar 包,不过这个 jar 包有要求:需要 dx 命令把 dex 文件转化成 jar 包功能,实际上它不是一个正常的 jar 包了,而是一个包含了 classes.dex 文件的压缩文件了。
12.dalvikvm
说明:运行一个 dex 文件。
用法:dalvikvm-cp[dex 文件][运行主类]
案例:
有时候为了测试一个 dex 文件功能可以用到这个命令,与上面的命令有很大相似之处,只是运行的文件不一样。
13.top
说明:查看当前应用的 CPU 消耗信息。
用法:top[-n/-m/-d/-s/-t]
-m//最多显示多少个进程
-n//刷新次数
-d//刷新间隔时间(默认 5 秒)
-s//按哪列排序
-t//显示线程信息而不是进程
案例:
这个命令在分析应用性能的时候非常有用,可以用 grep 过滤想要分析的应用信息,查看它的当前 CPU 使用率。
14.getprop
说明:查看系统属性值。
用法:getprop[属性值名称]
案例:
这个命令可以查看设备的信息,比如设备版本号、系统属性等,后面章节会介绍在 root 设备之后,还可以去修改这些系统属性。比如 debug 开关,让所有的应用都处于可调试状态。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论