问题标签 [ptrace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
733 浏览

c - 使用 Ptrace 跟踪正在打开的文件的位置

我正在使用以下代码,每当调用开放系统调用时,它实际上会获取寄存器(eax、ebx、ecx)中的内容。现在经过一番努力,我从这个问题中理解了价值观的含义。
ebx 包含指向文件名的指针。但是当我尝试访问它时,我遇到了分段错误。我哪里错了?代码可以从这里访问

0 投票
1 回答
1547 浏览

c - strace如何读取系统调用sys_open的文件名?

我正在编写一个使用 Ptrace 并执行以下操作的程序:

  • 它读取当前的 eax 并检查系统调用是否为 sys_open。
  • 如果是,那么我需要知道传递的参数是什么。

    int sys_open(const char * filename, const int mode, const int mask)

所以 eax = 5 意味着它是一个开放的系统调用
我知道 ebx 有这个问题的文件位置的地址 但是我怎么知道文件名的长度以便我可以读取该位置的内容?
我遇到了以下问题,这些问题解决了相同的
问题 1
问题 2(这只是我的问题!)
但我仍然没有解决我的问题。:( 因为两个答案都不清楚。当我尝试问题 1 中的方法时,我仍然遇到分段错误
你可以在这里
检查我的代码 所以现在我真的想知道 strace 如何如此精美地提取这些值:(

0 投票
1 回答
8795 浏览

c - ptrace(PTRACE_PEEKUSER) 和 ptrace(PTRACE_PEEKDATA) 之间的区别?

在发布了很多关于ptrace(最近的 5 个问题是我的问题:()之后,我终于在更换时得到了所需的输出

手册页中提到的区别是这样的

  • PTRACE_PEEKTEXT在孩子记忆中的位置 addr 读取一个单词
  • PTRACE_PEEKUSER在孩子的 USER 区域中的 offset addr 处读取一个单词

我无法单独从手册页中理解这种差异。任何人都可以在这方面教育我更多吗?

0 投票
1 回答
643 浏览

linux - 访问进程的内存区域

我正在尝试学习如何访问进程的内存区域,以打印代码的开始和结束地址、其数据区域以及堆的开始和结束。我相信/proc/$pid/maps包含进程的开始和结束内存区域,但我想知道是否还有其他方法。也许 ptrace() ?

0 投票
1 回答
553 浏览

c - ptrace 是在用户级别还是内核级别工作?

我正在尝试使用 ptrace 实现数据流异常检测。经过一番研究,我实现了一个类似于 strace 的程序。现在,我对此感到困惑,这是 wiki 告诉我的关于系统调用的内容:

“系统调用提供进程和操作系统之间的接口”

当我使用 ptrace 修改进程的内存时,我是在用户空间还是内核空间上工作?我真的很困惑。

0 投票
1 回答
662 浏览

c++ - Linux C++ ptrace——映射子进程内存的所有单元

我有一个类似的链接列表:

然后我有一个MemoryMapper班级将负责。我想把所有的记忆单元都放进去。

它在地址 0 处立即中断。我认为该过程可能从 0x0 开始,但我想我需要真正的偏移量。但是我怎样才能得到下一个偏移量(基于前一个的大小)?

希望很清楚,但如果需要我可以澄清谢谢

0 投票
1 回答
1508 浏览

c++ - 使用 Ptrace 检索系统调用,在第一个之后停止

我正在尝试检索所有系统调用的数量,并最终检索给定程序使用 ptrace 调用的系统调用的名称。我在一个 64 位系统上,所以我使用 ORIG_RAX * 8 来查找使用 ptrace 的系统调用。我目前只能检索第一个系统调用,示例运行的输出如下。有任何想法吗?

谢谢!

输出:griffinm@well $ g++ mystrace.cc

}

编辑:

我认为 8*Orig_RAX 是问题所在,机器是 64 位的,就像我说的那样。有任何想法吗?

0 投票
1 回答
4457 浏览

c++ - ptrace PTRACE_ATTACH 失败 - 用户拥有进程的 Linux 权限

为什么我需要以 root 身份运行(而不是 r00t_)?

正如您所看到的,我正在连接的进程归 r00t_ 所有

输出以 root 身份运行:

作为根输出:

当我是我试图附加到的进程的所有者时,为什么我不能附加?

0 投票
1 回答
363 浏览

ios - osx 上的“I Space”和“D Space”是什么以及它们之间的区别

在 sys/ptrace.h 中,我看到了类似的内容:

什么是“I 空间”、“D 空间”和“用户结构”?

0 投票
0 回答
357 浏览

c - 捕获 execve 系统调用的参数

我正在尝试使用 ptrace 并捕获传递给 execve 系统调用的参数。但是当我使用PTRACE_GETREGS并尝试获取参数SYS_execve时,所有寄存器值都为 0。你能告诉我 strace 如何让我获得所有通过的参数吗?我尝试阅读它的源代码,但他们显然使用了一些我没有完全使用它的结构。有没有更简单的方法??