目录

抓包/调试权限常见问题

ohos.permission.kernel.NET_RAW权限使用说明

约束与限制:

使用说明:

以tcpdump工具为例,使用二进制签名工具签名时在module.json文件中配置ohos.permission.kernel.NET_RAW权限。

{
    "requestPermissions": [
        {
            "name": "ohos.permission.kernel.NET_RAW"
        }
    ]
}

在hishell终端中使用sudo提权执行携带ohos.permission.kernel.NET_RAW权限的tcpdump,认证成功后可以进行下述操作:

# 示例
sudo ./tcpdump

ohos.permission.kernel.DEBUGGER权限使用说明

约束与限制:

使用说明:

以lldb高性能调试器为例,使用二进制签名工具签名时在module.json文件中配置ohos.permission.kernel.DEBUGGER权限。

{
    "requestPermissions": [
        {
            "name": "ohos.permission.kernel.DEBUGGER"
        }
    ]
}

在hishell终端中,使用携带ohos.permission.kernel.DEBUGGER权限的lldb工具,以ATTACH模式附加到调试证书签名的debug_bin进行调试。

# 示例:
# 确认UID一致
UID            PID  PPID C STIME TTY          TIME CMD
20020109     50262 32365 0 17:29:41 ?     00:00:00 lldb
20020109     52219 50262 0 17:31:15 ?     00:00:00 lldb-server
20020109     57631 13564 0 17:31:15 ?     00:00:00 debug_bin

# 附加到目标进程
(lldb) process attach --name debug_bin

ohos.permission.kernel.ALLOW_DEBUG使用说明

约束与限制:

使用说明:

以DevEco Studio真机设备调试PC应用为例,在应用的module.json5文件中配置ohos.permission.kernel.ALLOW_DEBUG权限。

{
    "requestPermissions": [
        {
            "name": "ohos.permission.kernel.ALLOW_DEBUG"
        }
    ]
}

在DecEco Studio调试器的进程列表中可以查看到携带ohos.permission.kernel.ALLOW_DEBUG权限的发布应用进程,选择目标进程后即可进行附加并调试,具体可参考应用调试。

ohos.privilege.operate_raw_net_packets使用说明

约束与限制:

使用说明:

应用在需要操作原始网络数据包前,通过osAccount提供的授权管理接口申请ohos.privilege.operate_raw_net_packets特权。应用处于前台时,系统会以弹窗方式向设备使用者申请授权(若此前已存在有效授权,则直接复用,不再重复弹窗);设备使用者同意授权后,应用即可获得操作原始网络数据包的能力。有关该特权的详细定义(包括授权策略),请参见系统账号特权列表。

// 示例
import { osAccount } from '@kit.BasicServicesKit';

let authManager: osAccount.AuthorizationManager = osAccount.getAuthorizationManager();
let privilege: string = 'ohos.privilege.operate_raw_net_packets';
let authOpt: osAccount.AcquireAuthorizationOptions = {
  isReuseNeeded: true,
  isInteractionAllowed: true
};
let authResult: osAccount.AcquireAuthorizationResult = await authManager.acquireAuthorization(privilege, authOpt);
if (authResult.resultCode === osAccount.AuthorizationResultCode.AUTHORIZATION_SUCCESS) {
  // 授权成功,可执行原始网络数据包相关操作
}

授权成功后,应用可以进行下述操作: