ELF可执行文件的静态注入
【ELF可执行文件的静态注入】闲来无事,把《程序员的自我修养》这本经典的书又翻了翻,终于下定决心把静态注入的第一个版本完成。
网上对于动态注入讲得比较多,大致思路是把待注入的elf文件加载到目标进程,通过ptrace系统调用对目标函数的内存地址进行替换。但是对静态注入涉及的比较少,《ELF格式可执行程序的代码嵌入》这篇文章讲得方法是比较通行的,但是实现起来比较繁琐。我试着用一种最简单的方式来呈现给大家。读者需要对elf格式有一定的了解才能领悟。建议阅读《ELF文件格式分析》(滕启明注)或者前面我提到过的经典。首先写一个最简单的hello world的linux程序,编译之后用readelf命令查看
文章图片
在第一个LOAD段和第二个LOAD段之间有一部分全为0的空间,0x00558到0x000ecc之间。
文章图片
这段汇编代码完成的任务就是打印Hello Plugin这个字符串,不依赖任何第三方库,读者可能会问为什么不用printf这个函数,当这段程序注入到宿主中的时候,需要定位到宿主中的printf函数地址,太麻烦
文章图片
编译后找到第一个LOAD段,这里面便是打印Hello Plugin的代码,通过程序注入到宿主当中,追加到0x00558后面,把宿主入口地址指向plugin的入口地址,再把plugin最后一条跳转指令的地址修改为宿主原来的入口地址,即完成最简单的静态注入
推荐阅读
- django-前后端交互
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 使用composer自动加载类文件
- ssh生成公钥秘钥
- Android系统启动之init.rc文件解析过程
- 微信小程序基础知识
- 误删/清空.bashrc文件/内容
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 插件化无法获取或找到.so文件
- locate搜索