You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

未Root安卓设备实现Keylogger遇权限拒绝及su文件缺失问题求助

未Root设备实现Android Keylogger的权限问题解决指南

嘿,你遇到的「permission denied」和「无法定位su文件」问题,本质原因是你的设备没有Root,这直接导致了现有代码完全无法工作。下面我来拆解问题,再给你一套非Root设备上的可行方案:

核心问题到底出在哪?

  • 不存在的su文件:/system/xbin/su是Root权限的专属入口,只有Root过的设备才会有这个文件。未Root设备里根本找不到它,所以你执行chmod 7777 /system/xbin/su肯定会报错,后续依赖su的shell命令也全都是无效操作。
  • 系统安全限制:settings put secure ...这类修改系统安全配置的命令,需要WRITE_SECURE_SETTINGS权限——这个权限只有系统预装APP或者Root后的APP才能拿到,普通APP就算申请了也会被拒绝。而且Android从安全角度出发,根本不允许APP自动启用辅助功能,必须由用户手动确认。

非Root设备的正确实现步骤

要在未Root设备上做按键记录,只能通过Android的**辅助功能(AccessibilityService)**实现,但必须引导用户手动开启服务,具体步骤如下:

1. 配置AccessibilityService

首先在AndroidManifest.xml里注册你的KeyLogger服务,一定要加对权限和配置:

<service
    android:name=".KeyLogger"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/accessibility_service_config" />
</service>

然后在res/xml/目录下创建accessibility_service_config.xml,配置服务的监听规则(根据你的需求调整):

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeKeyEvent|typeViewTextChanged"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibility_service_desc" />

(记得在strings.xml里添加对应的描述文本,用户开启服务时会看到这个说明)

2. 引导用户开启辅助功能

把你原来的enableAccessibility方法替换成下面的代码,跳转到系统辅助功能设置页面,让用户手动开启你的服务:

private void navigateToAccessibilitySettings() {
    Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
    startActivity(intent);
}

用户点击后会进入系统设置的辅助功能列表,找到你的APP对应的服务并开启,之后你的KeyLogger就能正常接收按键事件了。

总结一下为什么旧代码不行

  • 未Root设备没有su,所以依赖su的shell命令全无效;
  • 修改系统安全设置需要特殊权限,普通APP拿不到;
  • Android不允许APP自动开启辅助功能,必须用户手动操作。

最后提醒一句:辅助功能是用来帮助用户提升使用体验的,如果你用它做窃取隐私等违规操作,不仅违反Android隐私政策,还可能触犯法律,一定要确保你的应用用途合法合规哦!

内容的提问来源于stack exchange,提问作者X-Haroon-X

火山引擎 最新活动