【问题标题】:execute system calls on linux from strace log从 strace 日志在 linux 上执行系统调用
【发布时间】:2015-06-04 01:27:02
【问题描述】:

是否可以从 strace 日志中执行一系列系统调用。 如果是这样,如何? 这个人做了我想做的事(我想……):

recvmsg(3, 0x7ffffe502cf0, 0) = -1 EAGAIN (Resource temporarily unavailable)
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 0) = 1 ([{fd=4, revents=POLLIN}])
poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\1\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 0) = 0 (Timeout)
read(4, 0x7ffffe502e70, 16) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\22\0\7\0\32\0 \1H\1\0\0\6\0\0\0 \27\31\0\1\0\0\0\232>\205\2\31\0\v\0"..., 284}, {NULL, 0}, {"", 0}], 3) = 284
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\34\0\27E\32\0 \1H\1\0\0\233>\205\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 128
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\17\0\36E\32\0 \1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 224
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\222\0\37E\234\0\0\0FC \1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\22\0$E\234\0\0\0+\2\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 256

等等……

【问题讨论】:

  • 真正的最终目标是什么?
  • 这只是一个例子,但有时我想捕捉 GUI 进程执行的内容。 (可能在我自己的脚本中使用)这个具体的例子只是我点击“最小化所有”时从 lxpanel 捕获的。
  • 好主意。我使用了类似的技术来了解和使用 inotify() 系统调用。我编写了一个简短的 C 程序,将可执行文件命名为“inotify”,并将其放入脚本中。它需要一个文件名和另一个脚本名,因此当文件更改时,脚本会运行。 strace 是一个方便的小工具。
  • 老实说,我期待一些简单的东西,比如一个明显的 exec("wmctrl something");在这种情况下。有没有办法根据系统调用捕获来模仿动作?
  • 我必须坚持我在下面的回答。不。我希望是的。

标签: system-calls strace


【解决方案1】:

没有。即使在详细模式下,字符串也不完整,除非它们很短。地址指针将无效。

【讨论】:

  • 线条是否完整?我怎样才能调用这些函数?
  • 您可以编写一个 C 程序并使用您喜欢的任何数据/参数调用任何您喜欢的程序。用谷歌快速搜索任何函数名称都会找到所需的语法,通常还有一些很好的代码 sn-ps 可以帮助说明正在发生的事情。
猜你喜欢
  • 1970-01-01
  • 2016-10-16
  • 2011-07-26
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
相关资源
最近更新 更多