如何使用编程方法拦截linux上运行进程中调用的系统调用
how to use programming way to intercept system calls invoked in a running process on linux?
- 如何通过外部流程做到这一点?比如说,进程A想知道进程B中的系统调用是什么?像strace
- 如何打印出在进程本身中调用的系统调用?想注册一些活动吗
谢谢!
-
用ps或其他什么来检查进程id。然后运行"strace-p pidnumber"。
-
你可以检查strace是如何做到的,源代码是可用的,或者你可以从你的程序中调用strace。。。
如果只是关于一个特定的系统调用(而不是全部(,则可以重写C存根函数并将其放置在共享库中,并在执行目标应用程序之前通过设置LD_preload预加载库。
这导致当动态链接器解析函数调用时,您的函数优先于C库提供的函数。
这只适用于动态链接的应用程序(几乎所有(,并且您需要与所使用的C库二进制兼容。由于几乎所有linux都使用glibc,并且不同的glibc版本都是二进制兼容的,所以这应该不是问题。
你可以看看fakeroot(作为一个例子(如何做到这一点
添加:您也可以将调用转发到C库中的实际实现,而不是重新实现整个系统调用包装器。我认为你需要手动加载库并解析地址(不确定,但否则你可能会打电话给自己(。
相关文章:
- IPC使用多个管道和分支进程来运行Python程序
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 运行代码时,c++ 会终止进程
- 从 C++ 运行的进程偶尔会错过某个选项
- 父进程意外被子 cmd 杀死.exe运行 java jar 的进程 - WINDOWS 7 问题 - C++
- 如何在不丢失输出的情况下杀死/停止终端中正在运行的进程?
- Windows 将标准的 C 文件结构注入到正在运行的进程中
- 如何使用 c++ libboost 运行进程并获取其输出?
- 从Visual Studio 2017运行MPI应用程序,每个进程在不同的cmd窗口中
- GDB:运行不带符号的 cpp 进程调试
- 在程序继续C++时保持进程运行
- CLion 如何终止进程运行?
- 两个并发的 Python 进程可以在 Boost Python 中运行吗?
- 获取正在运行的进程的模块数
- C++ 减慢另一个正在运行的进程
- Linux 守护进程 - 运行函数两次
- SYSTEM_INFO::d wActiveProcessorMask是否可以在我的进程运行时更改
- 如何保持进程运行
- 程序(nload)在shell中执行时作为守护进程运行,但不在启动/自动化脚本中执行
- 从Mono上运行的C#进程运行C++应用程序.运行检测器错误