Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “如何打开”;亚洲开发银行壳牌公司;在正在调试的应用程序上下文中(在非根设备上)?_Android_Adb_Uid - Fatal编程技术网

Android “如何打开”;亚洲开发银行壳牌公司;在正在调试的应用程序上下文中(在非根设备上)?

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 |

当我刚刚运行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 | grep userId=
然后,您可以正常打开shell并运行:

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

来自:

  • /data/system中存在的packages.xml文件
  • packages.list文件存在于/data/system中
包含已安装的应用程序及其相应UID的列表

在同一问题中,我们建议:

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'对于所有包都是未知的
    。。。也许是?你有这个应用程序的调试版本吗?你是绝对的吗