跳到主要内容

抓包/调试权限常见问题

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

约束与限制:

  • 仅支持在PC/2in1设备上申请使用。
  • 在PC/2in1设备上,二进制程序可以申请ohos.permission.kernel.NET_RAW权限进行网络抓包,使用时需要sudo提权使权限生效。

使用说明:

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

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

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

  • 支持通过PF_PACKET协议族创建PACKET类型套接字,在数据链路层直接捕获原始网络帧。
  • 支持通过NETLINK_ROUTE和NETLINK_GENERIC类型的netlink套接字与内核通信,可以查询和管理网络接口。
# 示例
sudo ./tcpdump

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

约束与限制:

  • 仅支持在PC/2in1设备上申请使用。

  • 仅允许调试同UID进程。

  • 在PC/2in1设备上,二进制程序或应用申请ohos.permission.kernel.DEBUGGER权限后,可作为调试方,调试与其具有相同UID的以下内容:

    1. 自签名的二进制程序。
    2. 调试证书签名的应用/二进制程序。
    3. 由发布证书签名且具备 ohos.permission.kernel.ALLOW_DEBUG 权限的应用/二进制程序。

使用说明:

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使用说明

约束与限制:

  • 仅支持在PC/2in1设备上申请使用。

  • 在PC/2in1设备上,二进制程序或应用申请ohos.permission.kernel.ALLOW_DEBUG权限后,可作为被调试方,支持被同UID且具备ohos.permission.kernel.DEBUGGER权限的二进制程序或应用调试。

    此外,Deveco Studio在使用真机设备调试时,如果PC/2in1设备上的应用使用了release签名并且配置了ohos.permission.kernel.ALLOW_DEBUG权限,也支持被attach调试。

使用说明:

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

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

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