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