如何在正在调试的应用程序上下文中打开“adb shell”(在非 root 设备上)?

Vi.*_*Vi. 1 android adb uid

当我刚运行时adb shell,我从 运行 shell uid=2000(shell) gid=2000(shell),而没有对我的应用程序的 ptrace 访问权限。

如何打开与启动的应用程序具有相同 UID 的外壳?

ind*_*ble 5

这个答案

  • 存在于 /data/system 中的 packages.xml 文件
  • /data/system 中的 packages.list 文件

包含已安装的应用程序列表及其相应的 UID。

同一问题的另一个答案表明:

adb shell dumpsys package com.example.myapp | grep userId=
Run Code Online (Sandbox Code Playgroud)

然后你可以正常打开你的 shell 并运行:

$ su <UID>
Run Code Online (Sandbox Code Playgroud)

然后,您应该拥有与使用该 UID 的应用程序相同的访问权限和特权。

  • 最终,这不是一个非常有用的答案,因为*如果*你有能力`su`那么*你已经是root*(或能够成为root),因此可以`ptrace`进程*而不*需要匹配它的用户标识。 (2认同)

Ale*_* P. 5

run-as <your package name>用于切换到应用程序的 UID 或使用应用程序的 UIDrun-as <your package name> <command>运行单个命令。