【问题标题】:Linux, how to disassemble syscallsLinux,如何反汇编系统调用
【发布时间】:2018-05-05 07:45:35
【问题描述】:

我正在运行strace ls 以打印出ls 命令使用的系统调用。

现在,假设我想反汇编突出显示的命令以查看它们的机器指令。该怎么做?

【问题讨论】:

  • 请说明输出和错误。图片上的文字无法被搜索引擎索引以供将来的访问者使用。
  • @RobinGreen - 这是他最终想要做的,但不是他实际要求的。
  • 我知道系统调用是由 glibc 中的存根实现的,它调用真正的系统调用。但这是一个技术问题。出于所有意图和目的,我认为这个问题确实是该问题的重复。

标签: linux unix assembly system-calls strace


【解决方案1】:

以上内容不能“反汇编”为机器指令。 strace 向您显示的是一个系统调用列表,这些系统调用带有它们的参数摘要,打印出来很有帮助。

当然不可能从输出中获得进行这些调用的机器指令列表。甚至是一个可用的指令序列,可以在没有中间内容的情况下重现这些调用1

如果你真的想看到执行的指令,你需要使用调试器,而不是strace


1 - 因为strace 输出仅输出参数的摘要。注意到省略号了吗?

【讨论】:

  • 但是如果我想静态地检查这些系统调用的机器代码实现,它们在哪里,我将如何反汇编它们?
  • Ummm .... 系统调用实现在内核源代码中。如果您可以阅读源代码,为什么要反汇编它们? (此外,strace 输出不会记录任何内容供您反汇编。)
  • 我想将它们拆开用于教育目的。我不想在strace 期间反汇编系统调用执行,但系统调用原样。
  • 然后反汇编内核(玩得开心!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 2012-01-20
  • 2012-05-06
  • 2010-12-18
  • 2020-08-14
  • 1970-01-01
  • 2018-11-06
相关资源
最近更新 更多