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 有什么区别? 的相关文章

  • Swift 能抵抗 hooking 吗?

    Cycript 是一个基于控制台的应用程序 它是 Objective C 和 JavaScript 的混合体 Cycript 对于 iOS 应用程序的动态分析非常有用 如果您使用 Swift 编写任何方法或完整的 ipa 是否仍然可以在越狱
  • 是什么导致我的程序挂起并且无法正常退出? (管道、读取系统调用、while 循环)

    我有一个程序 我从多个子进程写入管道 然后尝试从每个管道读取写入每个进程的所有消息 并将它们打印到屏幕上 使用以下代码 具体来说 使用 while 循环read将消息存储到缓冲区的系统调用buf 我的程序将挂起并且不会退出 也不会打印发送到
  • 提示用户输入汇编 ci20 seg 错误

    我目前正在 ci20 机器上开发一个小程序 提示用户输入整数值 然后将该值打印到屏幕上 我当前的代码 data prompt asciiz Please enter an integer message asciiz nValue ente
  • 如何为钩子创建蹦床函数

    我对挂钩很感兴趣 我决定看看是否可以挂钩一些函数 我对使用 detours 这样的库不感兴趣 因为我想拥有自己做的经验 通过我在互联网上找到的一些资源 我能够创建下面的代码 这是基本的 但效果还不错 然而 当挂钩由多个线程调用的函数时 它被
  • 如何使用 write 系统调用将 int 写入文件并完全按照写入方式读取它们?

    如何使用 UNIX 的 write 系统调用将 int float 或其他类型写入文件 我想这样做而不使用任何 lib 函数 例如fprintf or fwrite 我想使用文件描述符而不是FILE 再次打开后 文件必须完全按照写入的方式读
  • 哪里可以找到系统调用源代码?

    在 Linux 中 如果我有源代码树 在哪里可以找到所有系统调用的源代码 另外 如果我想查找特定系统调用的源代码和程序集 我可以在终端中输入类似的内容my system call 您需要 Linux 内核源代码才能查看系统调用的实际源代码
  • WordPress 使用 GD 图像引擎以编程方式将图像转换为 WebP 格式

    有许多 PHP 解决方案和 WP 插件 它们都带有我不想要 不需要的附加选项 即如何提供转换后的文件 存储它们的位置等 我不需要所有这些 并且正在寻找使用 GD 的纯简单代码 我不想使用插件 谢谢 编码应该什么时候发生 任何时候你知道这是钩
  • 挂钩 Win32 窗口创建/调整大小/查询大小

    我正在尝试 扩展 现有的应用程序 The goal就是在不更改应用程序代码的情况下使现有应用程序变得更大 一个约束拉伸的应用程序不会 注意到 它 因此 如果应用程序查询创建的窗口大小 它将看到原始大小 而不是调整后的大小 我设法使用调整窗口
  • 连接 Hibernate 的查询生成

    我想实施虚拟视图与预处理器 一个简单的例子 之前的HQL FROM PublishedArticle a 生效后的 HQL FROM Article a WHERE a published true 本质上 我需要一种在执行查询之前处理查询
  • 函数插入仅适用于 malloc 而不是 free

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

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

    我正在使用 unix system 调用 Gunzip 和 gzip 文件 对于非常大的文件 有时 即在集群计算节点上 这些文件会被中止 而其他时候 即在登录节点上 它们会通过 系统调用可能花费的时间是否有一些软限制 还能是什么 调用线程应
  • Flutter Redux 和 Hook。如何像react一样观察useEffect内部变量实例的变化?

    我是 flutter 新手 试图观察像 React Native 这样处于减速器状态的变量 count 我使我的 redux 和 hook 工作完美 屏幕上的变量计数发生变化 但如果我更改操作 则永远不会再次调用 useEffect 仅一次
  • Mercurial hook 的操作类似于“changegroup”,但仅在推送时?

    我们已经构建了一个变更集传播机制 但它依赖于捆绑和解除捆绑新变更集 如果我们要使用changegroup钩子 那么它会导致循环行为 因为钩子是运行的在拉 推或解绑期间 http mercurial selenic com wiki Hook
  • 键盘挂钩获取组合键(WPF)

    我尝试在这里使用这篇文章 在 WPF C 中使用全局键盘钩子 WH KEYBOARD LL https stackoverflow com questions 1639331 using global keyboard hook wh ke
  • 低级挂钩/SetWindowsHookEx lParam 自动重复?

    在这里阅读 Windows PC 上如何实现键盘自动重复 https stackoverflow com questions 876852 how is keyboard auto repeat implemented on a windo
  • 低级键盘钩子不在 UI 线程上

    我想为键盘挂钩创建一个好的库 我使用 SetWindowsHookEx 方法 我注意到如果我的应用程序的主线程繁忙 则应在任何系统 KeyDown 事件中调用的方法 hookProc 不会执行 我认为钩子应该这样制作 以便另一个线程负责它
  • execlp() 系统调用输出错误

    这个非常简单的例子exec 系统调用 在这里 我试图打电话execlp 两次 但是 我没有得到例外的输出 它仅显示当前目录的第一次调用的输出 include
  • 使用 strace 修复挂起内存问题

    我有一个在 RHEL6 x 64 位 上运行的多线程进程 我发现当我尝试启动该进程时 该进程挂起并且大多数线程 同一进程的 崩溃 有些线程等待线程之间的共享内存被创建 我可以看到所有的共享内存都没有被创建 但是当我使用 strace 时 进
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就

随机推荐