ptrace:获取tracee的图像库?

时间:2013-11-14 18:08:29

标签: linux debugging ptrace

我在ubuntu 13.10上有这个小的剥离+打包的精灵文件。我需要以自动方式从其进程中转储各种信息,因此我将一个跟踪我进度的微小跟踪器一起攻击,类似于strace。出现了三个问题:

1)在加入我的流程之后,我怎样才能获得它的图像库?

2)流程先在哪里破解?显然它不是该计划的EP。

3)加载.so / .lib文件时,我可以通知任何方式?我想,GDB可以以某种方式做到这一点。

第一个问题确实是最重要的问题。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

1)/ proc / <PID> / maps包含进程映射的所有内容的列表,包括从可执行文件映射的页面。通过读取可执行的ELF头文件,您应该能够找出.text的位置。

2)动态链接二进制文件的执行通常从解释器开始。 ELF可执行文件中的INTERP程序头(带有readelf -e的转储)将具有其名称。它是解释器执行开始的入口点。通常,它是运行时链接程序ld-<some-variant>.so。它映射在可执行文件的部分中,也可以映射所需的共享库。

3)GDB对如何实现运行时链接器有相当详细的了解,因此它可以通过在正确的位置设置断点来拦截动态对象加载。你也可以做到的。 dlopen()似乎是拦截点的一个很好的候选者。正如我在#2中提到的,共享对象可能在可执行文件获得控制之前已经预先加载。