小编yfr*_*com的帖子

为什么 LD_PRELOAD 与系统调用一起工作??

思路LD_PRELOAD是在原来的共享库之前加载一个共享库,比如我可以先编译mylib.so加载它libc.so,所以当进程要使用printf它时,它会在so那个加载的那个中一一搜索找到mylib.so(因为这个so是先加载的) ) 而不是libc.so,所以它使用printfinmylib.so而不是printfin libc.so。

我明白为什么这个工程上都在实现的功能so一样printf的libc.so。

但是当我想挂钩write函数或其他syscall函数时,为什么会起作用?进程不搜索 中的函数so,它直接进入内核。

  1. 是否LD_PRELOAD适用于静态编译的二进制文件?为什么?在此重播中/sf/answers/970662801/提到LD PRELOAD不适用于静态二进制

  2. 为什么LD_PRELOAD在动态编译的二进制文件上工作以在系统调用上创建钩子?

架构是ARM。

c linux arm system-calls ld-preload

4
推荐指数
1
解决办法
474
查看次数

为什么 libpcap 比使用 raw 嗅探更好?

如果我想在 Linux 中嗅探数据包而不设置任何过滤器,我看到了 2 个选项。

  1. 使用libpcap

  2. 自己使用原始套接字,例如https://www.binarytides.com/packet-sniffer-code-in-c-using-linux-sockets-bsd-part-2/

为什么libpcap比我自己使用原始套接字更好?

c linux packet-sniffers libpcap

4
推荐指数
1
解决办法
994
查看次数

如何从 2 个进程 ping /dev/watchdog?

在 Linux(在 ARM 上运行)中,有一个进程有一个打开的 fd ,并且每隔几秒/dev/watchdog/发送一个fd 作为保持活动状态:ioctl()

while (1) { 
    ioctl(fd, WDIOC_KEEPALIVE, 0);
    sleep(10);
}
Run Code Online (Sandbox Code Playgroud)

我也想从另一个进程发送保持活动状态,但我无法打开另一个 fd /dev/watchdog/:当我尝试回显时,/dev/watchdog/我收到错误“设备或资源忙”。

  1. 我在哪里可以看到看门狗被定义为一次仅适用于 1 个进程?(我在另一个Linux中看到有些进程可以打开fd /dev/watchdog/)。

  2. 我该怎么做才能从两个进程喂养看门狗?

c linux arm watchdog linux-kernel

3
推荐指数
1
解决办法
2059
查看次数

如何为arm linux构建openssl

我使用 Ubuntu x86 并且有用于 Arm linux 的 gcc 交叉编译器。

我想为 arm linux构建开放的 ssl github 项目。

我阅读了文档,但无法理解如何构建它。

linux openssl arm github cross-compiling

2
推荐指数
1
解决办法
5461
查看次数

实现永远等待的汇编代码

我想在 Arm Linux 中编写简单而简短的汇编代码,并且永远等待。

label:
b label
Run Code Online (Sandbox Code Playgroud)

这可行,但需要大量 CPU 时间。

我考虑过nanosleep 每 X 秒使用并跳转到标签,但是如何在汇编中使用它?

pause系统调用(在注释中建议)不好,因为该进程有一个信号处理程序。

有简单的方法吗?

linux assembly sleep arm

1
推荐指数
1
解决办法
435
查看次数