热门问题
时间线
聊天
视角
DLL注入
来自维基百科,自由的百科全书
Remove ads
DLL注入(英语:DLL injection)是一种涉及计算机信息安全的特殊编程技术,它可以强行使一个进程加载某个动态链接库以在其私有地址空间内运行指定代码(往往是恶意代码)。[1]DLL注入的常见手段是用外部DLL库覆盖一个程序原先的DLL库,目的是实现该程序的作者未预期的结果。[2][3]比如,注入的代码可以挂钩(Hook)系统消息或系统调用[4][5],以达到读取密码框的内容等危险目的,而一般编程手段无法达成这些目的。[6]
能将任意代码注入任意进程的程序被称为DLL注入器(DLL injector)。
实现方式
- 在类Unix操作系统上,基于ld.so(在BSD上)和ld-linux.so(在Linux上)的动态链接器,可以通过在LD_PRELOAD环境变量中指定库的路径名,将任意库链接到新进程中,该变量可以全局设置或单独为某个进程设置。[8]
例如,在Linux系统上,这条命令会在启动时将文件"test.so"中的共享库链接到命令"prog"中:
LD_PRELOAD="./test.so" prog
这样的库可以像其他共享对象一样创建。在GCC中,这涉及到使用-fpic或-fPIC选项编译包含要链接的新全局变量的源文件[9],并使用-shared选项进行链接。[10]该库可以像其他库一样访问程序中声明的外部符号。
参考资料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads