我正在开发一个项目,我需要使用该项目LD_PRELOAD将一些库加载到内存空间中。
就像是:
LD_PRELOAD="./libapp.so" ./my_app
由于某些原因(我实际上正在研究一些二进制黑客),我必须知道某些函数(例如,)的内存地址(不是符号)并在执行前检测二进制代码。foolibapp.somy_app
但是,由于ASLR(地址空间布局随机化),每次libapp.so都会被加载到不同的内存地址,我无法知道foo执行前的内存地址。
我想以某种方式拦截加载时间,读出 的内存地址libapp.so,my_app使用 的内存地址执行一些检测foo,然后加载my_app到内存空间。
所以这里是我的问题:如何拦截加载过程并获取libapp.so?