问题标签 [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.
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 如何如此精美地提取这些值:(
c - ptrace(PTRACE_PEEKUSER) 和 ptrace(PTRACE_PEEKDATA) 之间的区别?
在发布了很多关于ptrace
(最近的 5 个问题是我的问题:()之后,我终于在更换时得到了所需的输出
和
手册页中提到的区别是这样的
PTRACE_PEEKTEXT
在孩子记忆中的位置 addr 读取一个单词PTRACE_PEEKUSER
在孩子的 USER 区域中的 offset addr 处读取一个单词
我无法单独从手册页中理解这种差异。任何人都可以在这方面教育我更多吗?
linux - 访问进程的内存区域
我正在尝试学习如何访问进程的内存区域,以打印代码的开始和结束地址、其数据区域以及堆的开始和结束。我相信/proc/$pid/maps包含进程的开始和结束内存区域,但我想知道是否还有其他方法。也许 ptrace() ?
c - ptrace 是在用户级别还是内核级别工作?
我正在尝试使用 ptrace 实现数据流异常检测。经过一番研究,我实现了一个类似于 strace 的程序。现在,我对此感到困惑,这是 wiki 告诉我的关于系统调用的内容:
“系统调用提供进程和操作系统之间的接口”
当我使用 ptrace 修改进程的内存时,我是在用户空间还是内核空间上工作?我真的很困惑。
c++ - Linux C++ ptrace——映射子进程内存的所有单元
我有一个类似的链接列表:
然后我有一个MemoryMapper
班级将负责。我想把所有的记忆单元都放进去。
它在地址 0 处立即中断。我认为该过程可能从 0x0 开始,但我想我需要真正的偏移量。但是我怎样才能得到下一个偏移量(基于前一个的大小)?
希望很清楚,但如果需要我可以澄清谢谢
c++ - 使用 Ptrace 检索系统调用,在第一个之后停止
我正在尝试检索所有系统调用的数量,并最终检索给定程序使用 ptrace 调用的系统调用的名称。我在一个 64 位系统上,所以我使用 ORIG_RAX * 8 来查找使用 ptrace 的系统调用。我目前只能检索第一个系统调用,示例运行的输出如下。有任何想法吗?
谢谢!
输出:griffinm@well $ g++ mystrace.cc
}
编辑:
我认为 8*Orig_RAX 是问题所在,机器是 64 位的,就像我说的那样。有任何想法吗?
c++ - ptrace PTRACE_ATTACH 失败 - 用户拥有进程的 Linux 权限
为什么我需要以 root 身份运行(而不是 r00t_)?
正如您所看到的,我正在连接的进程归 r00t_ 所有
输出未以 root 身份运行:
作为根输出:
当我是我试图附加到的进程的所有者时,为什么我不能附加?
ios - osx 上的“I Space”和“D Space”是什么以及它们之间的区别
在 sys/ptrace.h 中,我看到了类似的内容:
什么是“I 空间”、“D 空间”和“用户结构”?
c - 捕获 execve 系统调用的参数
我正在尝试使用 ptrace 并捕获传递给 execve 系统调用的参数。但是当我使用PTRACE_GETREGS
并尝试获取参数SYS_execve
时,所有寄存器值都为 0。你能告诉我 strace 如何让我获得所有通过的参数吗?我尝试阅读它的源代码,但他们显然使用了一些我没有完全使用它的结构。有没有更简单的方法??