LD_PRELOAD 和 strace 有什么区别?

2024-04-17

这两种方法都用于收集系统调用及其参数和返回值。当我们更愿意LD_PRELOAD为什么?也许我们可以说我们只能通过以下方式收集系统调用strace但我们可以收集图书馆的电话LD_PRELOAD诡计。然而,还有另一个库的跟踪器,其名称是ltrace.


strace正在使用跟踪(2) http://www.kernel.org/doc/man-pages/online/pages/man2/ptrace.2.html系统调用(与PTRACE_SYSCALL可能),所以会捕获每个系统调用(通过安装的内核挂钩ptrace)。它适用于任何可执行文件,甚至静态链接的可执行文件,或者使用除您的发行版 GNU Glibc 以外的其他东西的可执行文件(例如musl-libc 库 http://www.musl-libc.org/,或一些汇编编写的实用程序,例如旧版本busybox).

LD_PRELOAD技巧使用动态加载器,例如/lib64/ld-linux-x86-64.so.2 or /lib/ld.so (see ld.so(8) http://www.kernel.org/doc/man-pages/online/pages/man8/ld.so.8.html手册页)等...因此不适用于静态链接的可执行文件(或那些使用动态加载器和 GNU libc 之外的其他东西的可执行文件)。

ltrace大概也是ptrace based.

所有这些都是免费软件,您可以研究它们的源代码(并改进它)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LD_PRELOAD 和 strace 有什么区别? 的相关文章

  • 从 PHP 脚本运行 PHP 脚本而不阻塞

    我正在构建一个蜘蛛 它将遍历各个站点并对它们进行数据挖掘 由于我需要单独获取每个页面 这可能需要很长时间 可能 100 页 我已经将 set time limit 设置为每页 2 分钟 但 apache 似乎无论如何都会在 5 分钟后杀死脚
  • sys_open 是如何工作的?

    我编写了一个简单的字符设备驱动程序 mydev 其中包含 打开 文件操作 在用户空间应用程序中 我打开这个驱动程序节点 使用 open dev mydev O RDONLY open 系统调用内部调用sys open 我只想知道 sys o
  • 在 64 位系统上向 Linux Kernel 3.13 添加新的系统调用

    我正在尝试添加一个简单的helloworld系统调用kernel 3 13 0 37 generic在 64 位系统上 我将尝试逐步展示到目前为止我所做的事情 1 我已经通过以下方式下载了内核源代码 sudo apt get source
  • 如何在 Vista 中使用 SetWindowsHookEx 并通过 UAC 挂钩管理应用程序?

    我试图弄清楚是否有一种方法可以使用 SetWindowsHookEx 并能够影响在 Vista 上以管理员权限运行且启用了 UAC 的应用程序 这个应用程序需要向其他窗口的标题栏添加一个小按钮 以启用一些多显示器感知处理 我本以为这是不可能
  • Prestashop - 付款验证后更改订单状态

    付款验证后 订单状态将变为 付款已验证 法语为 付款接受 我想在付款验证时设置另一个状态 因此历史记录将显示以下内容 Current status My personnal status History My personnal statu
  • BitBucket WebHook 詹金斯

    我想配置 bitbucket 来触发 jenkins 构建 我花了一些时间研究这个问题 所有答案都来自几年前 但没有找到任何指南 因为从那以后事情似乎发生了变化 我正在尝试做的事情 将位桶推送到特定分支会触发构建 我有什么 Bitbucke
  • pthread_create 的钩子

    是否有 在 glibc 2 5 及更新版本中 为 pthread create 定义钩子的方法 有很多二进制应用程序 我想编写一个动态库通过 LD PRELOAD 加载 我可以在 main 属性构造函数 的入口处添加钩子 但是如何强制我的代
  • 注册一个全局钩子,检测鼠标是否拖动文件/文本

    我知道有可能为鼠标注册全局钩子 http www codeproject com KB cs globalhook aspx移动 按钮单击 滚动等 但我想知道是否有任何方法可以检测用户是否实际上使用全局挂钩拖动文件或文本 或其他内容 似乎找
  • Git Server Hooks - 它们是在客户端/克隆机器上本地执行的吗?

    Setup 我在 Windows 计算机上有主存储库 在另一台 Windows 计算机上有一个克隆 在我的里面update钩子 我已经添加了ipconfig打印 IP 地址 我本想看到主机的 IP 地址 但它实际上打印出克隆的 IP 地址
  • 用于挂钩进程函数的 Linux 模块

    我有一个问题 也许你有一些关于这方面的信息 我想在运行进程中挂钩套接字接收函数 recv 并修改传入数据 我怎么知道 我可以使用内核模块来做到这一点 但我找不到有关如何执行此类挂钩的信息 我尝试过其他方法 例如 Netfilter ipta
  • 从 C# 连接到 Windows 文件复制 API

    有没有办法从 C 连接到 Windows 文件复制 API 我知道这需要非托管代码 但代码示例或入门程序会很有帮助 我已经看过 C 代码 但都是希腊语 UPDATE 我很抱歉 我应该更清楚地表达我的意图 我实际上希望将 Windows 的复
  • 无法从 Git post-receive hook 检测分支

    我在远程存储库上设置了一个后接收挂钩 它尝试确定传入推送的分支名称 如下所示 branch git rev parse abbrev ref HEAD 不过 我发现无论我从 branch 变量推送哪个分支 都会设置为 master 有任何想
  • 在 Woocommerce 中将 Avada Catalog 排序挂钩覆盖回默认值

    我正在尝试通过将以下代码添加到 Avada child 来修改 Woocommerce 排序选项以获得自定义排序选项function php file add custom sorting option add filter woocomm
  • 如何在 OS161 中添加 open 系统调用的两个变体?

    从手册页OS161 Synopsis include
  • WordPress 使用 GD 图像引擎以编程方式将图像转换为 WebP 格式

    有许多 PHP 解决方案和 WP 插件 它们都带有我不想要 不需要的附加选项 即如何提供转换后的文件 存储它们的位置等 我不需要所有这些 并且正在寻找使用 GD 的纯简单代码 我不想使用插件 谢谢 编码应该什么时候发生 任何时候你知道这是钩
  • 函数插入仅适用于 malloc 而不是 free

    我在通过使用函数插入来监视 malloc 和 free 时遇到了一个小问题 当仅对 malloc 执行函数插入时 它按预期工作 然而 当尝试插入 free 时 它 最终会陷入循环 我似乎 free 被递归调用 但我只是不知道为什么 这是 m
  • git pre-status 或 post-status hook

    我想运行 lintergit status 不过似乎没有pre status nor post status hook 如何给 git 添加一个 hook The 精美文档 https git scm com book en v2 Cust
  • 使用主题函数在 body 标记后插入代码

    我试图在开头添加一段代码everyDrupal 站点中的页面 因为我有不止一个page模板 我想以编程方式执行此操作 但没有成功 我还是个新手 虽然我了解了钩子 主题函数等的要点 但我只是想不出实现这一目标的正确方法 到目前为止我已经覆盖了
  • git 预提交钩子格式代码 - Intellij/Android Studio

    本要点展示了如何在预提交时使用 Eclipse 格式化程序自动格式化 Java 代码 Source https gist github com ktoso 708972 https gist github com ktoso 708972
  • 如何从进程开始捕获所有应用程序/窗口消息? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我试图弄清楚如何捕获进程 窗口的所有窗口消息 从它在 c 中启动时开始 该过程不是我自己的 所以我需要使用某种钩子 我的目标是开始实时

随机推荐