【发布时间】:2015-02-18 17:33:18
【问题描述】:
基本上,我试图弄清楚 PIN 如何使用 IMG_AddInstrumentFunction 跟踪“图像”加载。文档说“使用它来注册回调以捕获图像的加载”。 (在 source/tools/ManualExamples 中有一个imageload pintool 使用它)。
From what I understand 一个被执行(execve'd)的 ELF 二进制文件被内核映射到内存中。如果可执行文件有一个 PT_INTERP 段(指向类似 ld-linux.so.2 的东西),它将将该文件的段映射到内存中并将控制权传递给它。
我想弄清楚的是:什么行为导致 PIN 识别“图像加载”?
最初我认为这将是一组指示图像加载的 open-fstat-mmap2-close 系统调用。 PIN 还显示加载中的初始可执行映像,但由于它无法拦截从 execve 到内核空间的 mmap 调用,所以我认为 PIN 也会监视 execve。
但是,当我尝试在 Linux 上使用带有 UPX 压缩二进制文件的 PIN 时(最终被剥离并静态链接),我根本找不到任何图像加载(甚至不是主可执行图像)。
为什么会这样?
【问题讨论】:
标签: linux linker loader elf instrumentation