【问题标题】:ptrace abnormal values returned in the registersptrace 寄存器中返回的异常值
【发布时间】:2013-04-24 00:39:20
【问题描述】:

我有一个任务,我必须使用 ptrace 来跟踪应用程序的系统调用。 问题是,当我运行程序时,它会给我一些不常见的值,这些值是我从寄存器中获得的,作为输出。其中一些值是负数。

这里是代码:http://pastebin.com/iMXYmqG6 这是一些示例输出:http://pastebin.com/bVa5vnWT

如果有人能给我一些关于我做错了什么的指导,我将不胜感激。

附:我正在开发一个 64 位操作系统,但我正在构建一个 32 位应用程序(这是对分配的限制。)

【问题讨论】:

  • 可能随机的大数是因为调用需要的参数少于三个,不需要的就忽略了。
  • 好吧,我还没有检查所有的调用,但至少 open、read 和 write 调用需要 3 个基于此站点 cs.lmu.edu/~ray/notes/linuxsyscalls 的参数,并且这些调用也会返回一些巨大的负数。
  • erm 我想我知道为什么会得到这些奇怪的值,这可能是因为我正在尝试使用 32 位调试器调试 64 位应用程序。会是这样吗?

标签: c++ ptrace


【解决方案1】:

当您使用 64 位操作系统时,您必须使用兼容 64 位的寄存器。即,RAX,ORIG_EAX,EBX,EBX .....如果不是,您将获得垃圾值

【讨论】:

    最近更新 更多