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最后一条跳转指令的地址修改为宿主原来的入口地址,即完成最简单的静态注入

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值