动态库注入(Dynamic Linker Injection)是一种注入技术,是将动态库注入到程序中,前者成为程序的一个组成部分。通常,注入的动态库是由“黑客”编写的用于某些特殊目的的恶意代码。注入完成后,程序将会执行恶意代码,在未经授权的情况下执行窃取机密数据、篡改文件等操作。
专注于为中小企业提供做网站、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业四平免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
本文将介绍,并介绍如何防范动态库注入攻击。
一、注入原理
动态链接(Dynamic Linking)是指程序在运行时动态的加载所依赖的库文件,而不是运行前完成链接,将库文件打包成可执行文件。在程序运行过程中,动态链接器会依照一定的规则查找依赖库文件的路径,找到所需库文件,然后在运行时将其链接起来。
动态库注入就是将自定义的动态链接库注入到原进程的地址空间中,利用动态链接交叉链接的特性,使得程序在执行时从自定义库中读取需要的代码,以达到控制原进程的目的。这种技术被广泛应用于恶意代码的实现中。
二、注入方法分析
(一)注入库文件
要实现动态库注入攻击,习惯上我们会抓住运行中的一个程序,并将自定义动态库注入到进程的地址空间中。这种实现方式有以下几种:
1、将动态库文件覆盖掉被注入进程的同名动态库文件。
2、修改程序进程的Linker信息,使其在运行时链接我们的恶意动态库。
(二)动态链接攻击
动态链接攻击是指利用程序的动态链接特性来攻击程序。主要方式有以下几种:
1、运行时hook。
在程序的前面照下一段代码,以实现修改函数实现变量的方法:
“`
#define _GNU_SOURCE
#include
#include
int (*old_puts)(const char *s) = NULL;
int puts(const char *s)
{
if (!old_puts)
{
old_puts = (int (*)(const char *))dlsym(RTLD_NEXT, “puts”);
}
old_puts(“sizehammer”);
return old_puts(s);
}
“`
2、注入so文件执行hook,此方式是通过与钩子机制进行对抗。
3、修改程序PIC表(Procedure Linkage Table)中的函数指针地址。
需要注意的是,上述Hook方式实现的方法是在修改原有函数的功能实现,而很多注入方法是通过检测第二个参数的函数地址,发现当前函数不是通过dlsym实现的,然后使用LD_PRELOAD指定的so库getdlsym来实现独有的hook覆盖。
三、注入攻击防范
为了避免动态库注入攻击,我们可以采取以下防范措施:
1、强制要求所有用户的账号必须至少有一个非数字字符。
2、使用ASLR技术,kernel 2.6.34以上的版本支持”personality”设置,设置为”ADDR_NO_RANDOMIZE”或使用命令行工具”execq”来实现。
3、使用SecureExec来缓解动态库注入技术。
4、应用程序过程内部结构代码(如imports和exports)强制进行静态绑定。
相关问题拓展阅读:
可以的,c++是兼容c语言的,建议看一下c和c++的混编
确定可以,C/C++的借口能互相调用,但需要用extern “C”{ 你的接口声明 }。
这个肯定是可以的了
linux下c 注入动态库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux下c 注入动态库,Linux下C程序的动态库注入方法,linux下c++能使用c的头文件和动态库吗的信息别忘了在本站进行查找喔。
成都服务器租用选创新互联,先试用再开通。
创新互联(www.cdcxhl.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。物理服务器托管租用:四川成都、绵阳、重庆、贵阳机房服务器托管租用。
文章题目:Linux下C程序的动态库注入方法 (linux下c 注入动态库)
文章起源:http://www.csdahua.cn/qtweb/news40/394390.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网