当我刚刚运行adb shell
时,我从uid=2000(shell) gid=2000(shell)
开始运行shell,而没有ptrace访问我的应用程序。
如何使用与启动的应用程序相同的UID打开shell?
答案 0 :(得分:4)
使用run-as <your package name>
切换到应用的UID或run-as <your package name> <command>
以使用应用的UID运行单个命令。
答案 1 :(得分:3)
来自this answer:
包含已安装的应用程序列表及其对应的UID。
同一问题中的adb shell dumpsys package com.example.myapp | grep userId=
然后您可以正常打开shell并运行:
$ su <UID>
然后,您应该具有与使用该UID的应用程序相同的访问权限和权限。
答案 2 :(得分:0)
使用socat的解决方法:
android.permission.INTERNET
添加到您的应用中; /data/local/tmp/
。确保每个人都可以启动它; Runtime.getRuntime().exec("/data/local/tmp/socat tcp-l:4446,fork,reuseaddr exec:/system/bin/sh,pty,stderr,setsid");
; adb forward tcp:4446 tcp:4446
socat `tty`,raw,echo=0,opost=1 tcp:127.0.0.1:4446
连接到应用程序上下文中的shell。请注意,此设置不安全,不应保留在生产应用中。