Android 应用安全与逆向:超实用命令总结,让你的开发效率倍增!

今天分享的是关于 Android 安全防护和逆向常用的命令,准备好你们的键盘和鼠标,让我们开始吧!

1. 两个基础命令

1.1 cat 命令

cat 命令是一个十分常用的命令,它可以用来查看文件内容、合并多个文件。

  • 查看文件内容(最常用

使用 cat 命令最常见的用途就是查看文件内容:cat filename

如果文件比较大,可以使用 cat filename | more 命令来分页显示,这样就不会眼花缭乱了。

如果需要过滤掉无关信息,可以使用 cat filename | grep keyword。注意 keyword 并不是你要过滤的内容的关键字,而是查询所有包括了 keyword 的内容,其他内容过滤掉。

比如我有一个这样的 txt 文件,里面有如下内容:

此时,我想找出所有包含了 222 的内容,其他信息过滤掉,则可以执行命令:

bash 复制代码
cat test.txt | grep 222

执行结果如下:

  • 合并多个文件

cat file1 file2 > newfile

  • 将文件内容附加到另一个文件末尾而不覆盖原始文件:

cat file1 >> file2

  • 显示行号

cat -n filename

这样可以更方便地定位到某一行。

1.2 echo 命令

  • 打印所有的文件和文件夹(ls 命令的替代)

echo *

  • 打印指定的文件类型

比如,我们想要打印所有的 .png 文件,可以使用下面的命令:

bash 复制代码
echo *.png
  • 将内容写到文件中
bash 复制代码
echo "666" > test.txt

此时,我们查看一下 test.txt 的内容:

发现 666 已经被成功写进文件了,但是之前的内容却没有了。所以,这里补充一个小的知识点:使用重定向符号 > 写入内容时,会直接覆盖掉原文件中的内容。所以在使用的时候一定要小心。

如果你不希望覆盖,而只是想将内容追加到原有内容的末尾,那么你可以使用另外一个重定向符号:>>

bash 复制代码
echo "777" >> test.txt

echo 命令还有很多用法,这里只列举了几个常用的。

1.3 touch 命令

  • 使用 touch 命令创建一个空文件(最常用
bash 复制代码
touch filename

如果你希望一次创建多个文件,则可以使用如下命令:

bash 复制代码
touch filename1 filename2 filename3 filename4
  • 更改文件的访问和修改时间

touch 命令的另一个用途是更改文件的访问时间和修改时间。

让我们举一个例子来说明如何做到这一点。

我通过 touch 命令创建了一个名为 myfile.txt 的文件,并通过 stat 命令查看了它的统计信息,然后等待一会,再次执行 touch 命令:

如果你想单独更新某个时间状态信息,可以使用如下命令:

bash 复制代码
// 使用'-a'选项来仅更改此文件的访问时间
touch -a myfile.txt

// 使用'-m'选项仅更改此文件的修改时间
touch -m myfile.txt

2. adb shell 命令

对于 adb shell 命令,有两种执行方式。我们以 adb shell pm clear [pkgname] 命令来举例子:

第一种方式是直接在终端运行 adb shell pm clear [pkgname] 命令。

第二种执行方式是先在终端运行 adb shell,然后再运行 pm clear [pkgname] 命令。

2.1 查看当前应用的 Activity 信息

css 复制代码
adb shell dumpsys activity top​​

如果只想查看 Activity 的名字,可以加上一个过滤条件:

css 复制代码
adb shell dumpsys activity top | grep ACTIVITY

如果想把输出的信息保存到一个文件中,可以借助重定向符号:

css 复制代码
adb shell dumpsys activity top > info.txt

2.2 查看指定包名应用的详细信息

css 复制代码
adb shell dumpsys package [pkgname]

这个命令实际上是将 AndroidManifest.xml 中的内容打印了出来。

2.3 安装 apk 文件到手机上

css 复制代码
adb install [apk文件]

2.4 卸载应用

css 复制代码
adb uninstall [packagename]

2.5 从手机中提取文件到本地

复制代码
adb pull 手机目录文件 本地目录

如果操作时遇到权限问题,可以使用 chmod 修改一下权限。

2.6 将本地文件存放到手机中

perl 复制代码
adb push 本地目录文件 手机目录

同样的,如果操作时遇到权限问题,使用 chmod 修改一下权限。

2.7 截屏操作

css 复制代码
adb shell screencap -p 截图文件保存路径

例如:​​​​​​​​​​adb shell screencap -p /sdcard/tmp.png​​

对于测试同学,如果想快速截取手机屏幕,并保存到本地进行查看,可以使用几个组合命令来定制一个脚本文件:

bash 复制代码
#!/bin/bash

# Mac 版
adb shell screencap -p /sdcard/tmp.png
adb pull /sdcard/tmp.png /Users/chenyouyu/workspace
open /Users/chenyouyu/workspace/tmp.png

# Windows 版
adb shell screencap -p /sdcard/tmp.png
adb pull /sdcard/tmp.png D:\
​​​​​​​​start D:\tmp.png​​

2.8 输入文本内容

css 复制代码
adb shell input text [需要输入文本框内容]

例如:​​​​​​​​​​adb shell input text 'HelloWorld'​​

效果如下:

这个命令在自动化测试中非常有用。

2.9 启动应用程序并打开指定的 Activity

bash 复制代码
adb shell am start -n com.example.myapp/.MainActivity

如果不知道目标 Activity 的完整路径,可以使用如下命令先查看:

css 复制代码
adb shell dumpsys activity top | grep ACTIVITY

2.10 强制停止一个运行中的应用程序

如果在测试过程中,想停止一个应用程序,可以使用如下命令:

arduino 复制代码
adb shell am force-stop com.example.myapp

2.11 清除指定应用程序的数据

可以在测试之前,清除应用程序的数据,以确保测试之间的应用程序状态是干净的状态:

arduino 复制代码
adb shell pm clear com.example.myapp

2.12 模拟按键事件

模拟按下 HOME 键,以返回到主屏幕:

css 复制代码
adb shell input keyevent KEYCODE_HOME

除了模拟按下 HOME 键,常用的还有如下几种:

ChatGPT3.5:是的,以下是一些常用的按键事件及其相应的命令:

  • 返回键
css 复制代码
adb shell input keyevent KEYCODE_BACK
  • 菜单键
css 复制代码
adb shell input keyevent KEYCODE_MENU
  • 音量加键
css 复制代码
adb shell input keyevent KEYCODE_VOLUME_UP
  • 音量减键
css 复制代码
adb shell input keyevent KEYCODE_VOLUME_DOWN
  • 电源键
css 复制代码
adb shell input keyevent KEYCODE_POWER
  • 拍照键
css 复制代码
adb shell input keyevent KEYCODE_CAMERA
  • 抬起键
css 复制代码
adb shell input keyevent KEYCODE_DPAD_UP
  • 落下键
css 复制代码
adb shell input keyevent KEYCODE_DPAD_DOWN
  • 左键
css 复制代码
adb shell input keyevent KEYCODE_DPAD_LEFT
  1. 右键
css 复制代码
adb shell input keyevent KEYCODE_DPAD_RIGHT
  • 确认键
css 复制代码
adb shell input keyevent KEYCODE_ENTER

这些按键事件可以帮助你模拟用户输入的操作,从而进行自动化测试。

2.13 模拟屏幕触摸事件

比如在指定屏幕坐标处模拟点击事件:

css 复制代码
adb shell input tap 100 200

该命令中的 100 和 200 表示点击位置的横向和纵向坐标。这意味着该命令将在设备屏幕上的(100,200)位置模拟点击事件。

获取坐标的一个快捷方式是,使用开发者选项里面的指针位置

2.14 模拟屏幕滑动事件

在屏幕上滑动手势:

css 复制代码
adb shell input swipe 100 200 300 400

该命令中的 100 和 200 表示起始点的横向和纵向坐标,而 300 和 400 表示滑动终点的横向和纵向坐标。这意味着该命令将从(100,200)开始向(300,400)滑动。

使用该命令可以帮助测试人员模拟一些用户操作,例如在测试中滑动屏幕上的滚动条,列表或其他控件等。

还可以使用其他一些选项来自定义滑动事件:

  • 持续时间(单位:毫秒)

可以使用 -d 选项指定滑动事件的持续时间。例如,如果你想让滑动事件持续 500 毫秒,可以执行以下命令:

css 复制代码
adb shell input swipe 100 200 300 400 500
  • 按压力度(0到1之间的浮点数)

可以使用 -p 选项指定滑动事件的按压力度(默认值为 1.0)。例如,如果你想使用 0.5 的按压力度执行滑动事件,可以执行以下命令:

css 复制代码
adb shell input swipe 100 200 300 400 500 -p 0.5
  • 指定滑动事件类型

可以使用 --input-source 选项指定滑动事件的类型(默认为触摸输入)。例如,如果你想使用鼠标模拟滑动事件,可以执行以下命令:

css 复制代码
adb shell input swipe 100 200 300 400 500 --input-source=mouse

2.15 获取设备属性信息

如获取设备的序列号:

复制代码
adb shell getprop ro.serialno

序列号用于唯一标识设备。还有一些其他常用的设备属性信息可以获取,包括:

  • 设备制造商(Manufacturer):

    adb shell getprop ro.product.manufacturer

  • 设备型号(Model):

    adb shell getprop ro.product.model

  • Android版本(Version):

arduino 复制代码
adb shell getprop ro.build.version.release
  • SDK版本(Android SDK Level):

    adb shell getprop ro.build.version.sdk

  • 系统语言(Language):

    adb shell getprop ro.product.locale.language

  • 国家/地区(Region):

    adb shell getprop ro.product.locale.region

  • 屏幕分辨率(Screen Resolution):

arduino 复制代码
adb shell wm size

以上就是一些常用命令的总结,后续会继续补充。

相关推荐
止观止2 小时前
快速了解命令行界面(CLI)的行编辑模式
emacs·命令行·vi·快捷键·cli·行编辑
IT成长日记10 天前
【自动化运维神器Ansible】playbook命令行变量定义全流程解析
运维·自动化·ansible·变量·命令行·playbook
爱吃猪排10 天前
基于 Paddle Inference 3.0 的高性能 OCR 服务实现
人工智能·命令行
GetcharZp16 天前
终端丑拒?效率低?是时候让 Oh My Zsh 唤醒你的 Ubuntu 了!
ubuntu·命令行
不简说16 天前
有Trae助力1天时间用Node搞了个SSH命令行工具!解放双手~
开源·node.js·命令行
万能小锦鲤16 天前
本地组策略编辑器无法打开(gpedit.msc命令异常)
命令行·异常·工作组策略编辑器
xulihang24 天前
命令行调用扫描仪扫描文档
前端·python·命令行
我真的好暴躁啊25 天前
Windows Terminal 配置指南
程序员·命令行
励志前端小黑哥1 个月前
别再嫌弃你的命令行窗口不好用了 -- 试试ohmyzsh
shell·命令行
小Lu的开源日常1 个月前
在 Mac 上使用 iTerm2 和 Oh My Zsh 打造优雅终端
macos·iterm·命令行