news 2026/9/9 21:10:40

Ghidra 调试器 attach 到目标进程报 Operation not permitted 怎么解决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ghidra 调试器 attach 到目标进程报 Operation not permitted 怎么解决

Ghidra 调试器 attach 到目标进程报 Operation not permitted 怎么解决

【免费下载链接】ghidraGhidra is a software reverse engineering (SRE) framework项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra

用 Ghidra Debugger 在 Linux 上通过 GDB attach 到已在运行的目标进程时,如果 attach 动作返回Operation not permitted或类似报错,Ghidra 官方课程文档给出的判断是:你的系统大概率启用了 Yama 的ptrace_scope=1,限制了 ptrace 的使用。仓库随课程练习文件提供了一个小工具anyptracer,用它来运行目标进程,可以让单个进程允许被 attach,而不必改动系统全局安全策略。本文以课程配套样例termmines为目标,给出完整的 attach 操作路径、两种修复方案和验证方法。

前提条件

  • Linux 系统,GDB 可用,且 Ghidra 的 Debugger 工具已配置好 gdb 启动器(启动菜单中存在Configure and Launch ... using → gdb)。
  • 目标进程独立于 Ghidra 之外运行。文档说明这种 attach 技巧之所以可行,是因为目标会等待输入;对启动后立即退出的程序无法 attach。
  • 如果需要自己编译termmines,系统要有ncurses及其开发头文件和库,在练习文件目录执行:
cd GhidraDocs/GhidraClass/ExerciseFiles/Debugger make

make会同时编译termminesanyptracer。如果只需要 attach 工具本身,也可以只构建anyptracer目标(make anyptracer,见 Makefile),避免受 ncurses 依赖影响。

Attach 的操作路径与现象定位

按课程文档 Attaching 一节,attach 的完整步骤是:

  1. 在 Ghidra 之外的终端里运行termmines(如需自定义命令行参数,就在这里带上)。
  2. 在 Ghidra Debugger 中,使用Launch按钮的下拉菜单,选择Configure and Launch termmines using... → gdb
  3. 清空Image字段。清空后配置的是一个不带目标的 GDB 会话;gdb 的位置和架构默认值对 64 位 x86 目标(使用系统自带的 GDB)是正确的。
  4. 点击Launch
  5. 在左侧Model窗口展开Available节点,在过滤框里输入termmines
  6. 右键该进程节点选择Attach;或者记下 PID(例如 1234),在Terminal中输入attach 1234

第 6 步在 Yamaptrace_scope=1的系统上就会得到Operation not permitted一类错误。

修复方案一(文档推荐):用 anyptracer 运行目标

anyptracer是课程提供的一个 stub 工具,源码见 anyptracer.c:它先对自己调用prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY),允许任何其它进程追踪自己,然后再执行一条 shell 命令。这样目标进程在ptrace_scope=1的系统上也能被 attach,效果"如同"ptrace_scope=0,但不会降低系统其余部分的安全性。

用法(来自程序自带的 Usage 文本):参数是一条 shell 命令,执行方式相当于/bin/sh -c COMMAND,且必须是单个参数;要运行带多个参数的命令时,把整条命令用引号包起来。针对 termmines 场景,文档给出的示例命令是:

./anyptracer 'exec ./termmines'

关键在于exec:它让样例运行在这个"许可进程"内部,之后的 attach 才能成功。然后回到 Ghidra 侧重复上一节的 attach 步骤:以清空Image的方式配置 gdb 会话、Launch、在Model窗口找到termminesAttach

修复方案二(需要 root,日常系统不推荐):修改 ptrace_scope

如果你有 root 权限,文档说可以直接按照相关的在线文档把ptrace_scope配置改掉(文档未给出具体命令)。但文档明确警告:除非是专门留给调试用的系统,否则不应该全局设置ptrace_scope=0,因为这会显著降低系统安全性——任何被入侵的进程都能 attach 到同一用户的其它进程并窃取数据(例如凭据)。所以日常机器上应优先使用方案一。

验证 attach 是否正常

课程练习给出的验证方式是看回溯:在 Debugger 的Terminal中输入:

bt

如果目标停在read中(termmines 启动后就在等待输入),即表示 attach 完成(文档以此作为练习完成的判断)。

attach 后Model窗口状态异常时,文档给出两个排查项:

  • Model窗口是空的:检查 Dynamic Listing 里是否有 "noname" 标签页,点击它。
  • attach 之后Model窗口看起来不完整:确认 Filter 过滤框已清空。

边界与限制

  • 这条 attach 路径依赖目标进程存活且等待输入。文档也说明,attach 属于"slightly more advanced"的用法,适用于目标是更大系统的一部分、需要 in situ 运行的情况。
  • anyptracer只是让被它启动的那条命令允许被任意进程追踪,不改变 Yama 的全局策略;prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY)的效果只作用于它派生的进程。
  • 方案二属于系统级配置变更,执行前务必确认上面给出的安全风险描述。

相关文档:A1-GettingStarted.md(Attaching 与 Troubleshooting 两节)、Makefile、anyptracer.c。

【免费下载链接】ghidraGhidra is a software reverse engineering (SRE) framework项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 21:10:38

Windows 上 PaddleOCR C++ 推理提示找不到 paddle_fluid.dll 怎么解决

Windows 上 PaddleOCR C 推理提示找不到 paddle_fluid.dll 怎么解决 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 l…

作者头像 李华
网站建设 2026/9/9 21:10:07

基于Python的二手交易平台开发实战:闲一品系统架构与技术拆解

做二手交易平台这件事,我前后折腾过好几个版本,从最早的简单爬虫加静态页面,到后来真正用Python把“闲一品”这套系统跑通,中间踩过的坑、推翻重来的设计,比写业务代码本身还要多。很多人觉得二手交易平台不就是个“电…

作者头像 李华
网站建设 2026/9/9 21:10:02

电赛E题复盘:运动目标控制与自动追踪系统的标定与PID调参

简介:面向全国大学生电子设计竞赛参赛团队,围绕2023年E题自动追光云台,提供基于STM32F1微控制器的完整参考方案。内容涵盖光敏传感器信号采集、云台姿态检测、步进或伺服电机驱动、PID控制算法以及电源管理,从硬件电路到软件代码均…

作者头像 李华
网站建设 2026/9/9 21:07:32

栈与堆防护完全指南:从溢出原理到编译运行时加固

做底层开发和系统编程的人,几乎都绕不开“栈 / 堆防护”这个话题。只要你的程序还在用 C/C 这种能直接操作内存的语言,栈溢出和堆溢出就像两把悬在头顶的剑,平时感觉不到,一旦触发,轻则段错误,重则被攻击者…

作者头像 李华
网站建设 2026/9/9 21:04:48

ABAP开发对象安全废弃全流程:依赖分析、传输管理与实践指南

在SAP项目里待久了,你会发现一个很现实的问题:不管当初开发计划排得多周密,系统上线三五年之后,ABAP开发对象一定会有大量冗余。Y报表、Z程序、临时接口、实验性类,像衣柜里过季的衣服一样越堆越多。更麻烦的是这些旧对…

作者头像 李华