Android “如何打开”;亚洲开发银行壳牌公司;在正在调试的应用程序上下文中(在非根设备上)?
当我刚刚运行adb shell时,我从Android “如何打开”;亚洲开发银行壳牌公司;在正在调试的应用程序上下文中(在非根设备上)?,android,adb,uid,Android,Adb,Uid,当我刚刚运行adb shell时,我从uid=2000(shell)gid=2000(shell)运行shell,而不需要ptrace访问我的应用程序 如何使用与启动的应用程序相同的UID打开shell?来自: /data/system中存在的packages.xml文件 packages.list文件存在于/data/system中 包含已安装的应用程序及其相应UID的列表 在同一问题中,我们建议: adb shell dumpsys package com.example.myapp |
uid=2000(shell)gid=2000(shell)
运行shell,而不需要ptrace访问我的应用程序
如何使用与启动的应用程序相同的UID打开shell?来自:
- /data/system中存在的packages.xml文件
- packages.list文件存在于/data/system中
adb shell dumpsys package com.example.myapp | grep userId=
然后,您可以正常打开shell并运行:
$ su <UID>
$su
然后,您应该拥有与使用该UID的应用程序相同的访问权限和特权。来自:
- /data/system中存在的packages.xml文件
- packages.list文件存在于/data/system中
adb shell dumpsys package com.example.myapp | grep userId=
然后,您可以正常打开shell并运行:
$ su <UID>
$su
然后,您应该拥有与使用该UID的应用程序相同的访问权限和特权。使用
运行方式
切换到应用程序的UID,或使用运行方式
使用应用程序的UID运行单个命令。使用运行方式
切换到应用程序的UID,或使用运行方式
使用应用程序的UID运行单个命令UID.使用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,setid”)代码>在基于Java的应用程序启动时李>
adb转发tcp:4446 tcp:4446
在主机上使用socat`tty`,raw,echo=0,opost=1 tcp:127.0.0.1:4446
连接到应用程序上下文中的shell
请注意,此设置不安全,不应留在生产应用程序中。使用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,setid”)代码>在基于Java的应用程序启动时李>
adb转发tcp:4446 tcp:4446
在主机上使用socat`tty`,raw,echo=0,opost=1 tcp:127.0.0.1:4446
连接到应用程序上下文中的shell
请注意,此设置不安全,不应留在生产应用程序中。可能重复@tim,重复的候选项错误。链接的问题是选择要在其中打开的shell的设备。这个问题是用特定的uid打开shell。这不是这个问题的重复。这要求指定一个特定的设备,这要求一个特定的UIDTry模拟器,其中adb作为根运行;如果您需要使用运行方式已中断的真实设备,您可以临时将配置为作为不同进程运行的SSH或cruder shell服务器合并到应用程序的构建中,并使用该方法。我正在尝试使用shell server方法,但应用程序之间的AF_UNIX套接字似乎受到此设备上SELinux的限制。现在可能是进行socat的时候了。可能是@tim的重复,错误的重复候选项。链接的问题是选择要在其中打开的shell的设备。这个问题是用特定的uid打开shell。这不是这个问题的重复。这要求指定一个特定的设备,这要求一个特定的UIDTry模拟器,其中adb作为根运行;如果您需要使用运行方式已中断的真实设备,您可以临时将配置为作为不同进程运行的SSH或cruder shell服务器合并到应用程序的构建中,并使用该方法。我正在尝试使用shell server方法,但应用程序之间的AF_UNIX套接字似乎受到此设备上SELinux的限制。这可能是socat
/system/bin/sh:su:notfound
的时候了。当然,这在根设备上不是问题。不幸的是,由于内置的安全限制,我认为在无根设备上没有任何方法可以做到这一点。我很高兴被证明是错的。你可以调试应用程序,这样你就可以间接启动shell了。问题是如何方便地执行。最终,这不是一个非常有用的答案,因为如果您具有su
的能力,那么您已经是root用户(或能够成为root用户),因此可以ptrace
无需匹配其UID即可运行进程。/system/bin/sh:su:not found
。当然,这在根设备上不是问题。不幸的是,由于内置的安全限制,我认为在无根设备上没有任何方法可以做到这一点。我很高兴被证明是错的。你可以调试应用程序,这样你就可以间接启动shell了。问题是如何方便地完成它。归根结底,这不是一个非常有用的答案,因为如果你有能力su
,那么你已经是root(或者能够成为root)因此可以ptrace
无需匹配进程的UID即可运行进程。它表示运行方式:对于所有包,“com.example.myapp”是未知的。。。也许是?你有这个应用程序的调试版本吗?您是否绝对确定包名完全正确?有些设备无法正常工作,但不要过早放弃。它是从MainActivity-debug.apk安装的,所以我希望它是debug。包名从AndroidManifest.xml
和dumpsys-package-com.example.myapp
中获得。该设备Samsung GT-N7100
运行安卓4.3。它说运行方式:包'com.example.myapp'对于所有包都是未知的
。。。也许是?你有这个应用程序的调试版本吗?你是绝对的吗