由于许可证问题,很少有库不能静态链接。
那么,是否可以通过LD_PRELOAD环境变量或/etc/ld.so.preload配置来防止/检测预加载库?
可以通过getenv()检测到前面的内容。但我不知道另一种方法。
我想可能有一种通用的方法,对吧?
发布于 2013-12-15 18:17:33
是否可以通过LD_PRELOAD环境变量或/etc/ld.so.preload配置来防止/检测预加载库?
你似乎在尝试实施某种反黑客保护。如果是这样的话,这将是值得你的时间研究现有的防裂技术。这本书描述了一些。
请注意,除了LD_PRELOAD和/etc/ld.so.preload之外,还有许多其他技术可以向应用程序中注入“外文”代码。立即想到的几个例子是:LD_AUDIT,在调试器下运行,以及重命名/替换libc.so。
你没什么希望阻止一个中等复杂的攻击者。在Linux上,我可以构建自己的libc.so.6,并且可以将LD_PRELOAD重命名为其他东西。我也可以构建我自己的内核,并让它自动地将myhack.so注入到您的进程中,而不会产生任何用户空间可见效果。或者,我可以简单地让系统调用在您的应用程序执行时执行其他操作。
..。LD_PRELOAD ..。可以通过
getenv()检测到
这只会阻止最不成熟的攻击者,原因有二:
getenv(),并可以对应用程序隐藏LD_PRELOAD,并且LD_PRELOAD只在进程启动时起作用。进程启动后,预加载库可以轻松地从环境中删除LD_PRELOAD,然后应用程序才有机会检查它。https://stackoverflow.com/questions/20584977
复制相似问题