ELF可执行文件的静态注入
来源:互联网 发布:nodejs socket php广播 编辑:程序博客网 时间:2024/05/18 09:11
闲来无事,把《程序员的自我修养》这本经典的书又翻了翻,终于下定决心把静态注入的第一个版本完成。
网上对于动态注入讲得比较多,大致思路是把待注入的elf文件加载到目标进程,通过ptrace系统调用对目标函数的内存地址进行替换。但是对静态注入涉及的比较少,《ELF格式可执行程序的代码嵌入》这篇文章讲得方法是比较通行的,但是实现起来比较繁琐。我试着用一种最简单的方式来呈现给大家。读者需要对elf格式有一定的了解才能领悟。建议阅读《ELF文件格式分析》(滕启明注)或者前面我提到过的经典。首先写一个最简单的hello world的linux程序,编译之后用readelf命令查看
在第一个LOAD段和第二个LOAD段之间有一部分全为0的空间,0x00558到0x000ecc之间。
这段汇编代码完成的任务就是打印Hello Plugin这个字符串,不依赖任何第三方库,读者可能会问为什么不用printf这个函数,当这段程序注入到宿主中的时候,需要定位到宿主中的printf函数地址,太麻烦
编译后找到第一个LOAD段,这里面便是打印Hello Plugin的代码,通过程序注入到宿主当中,追加到0x00558后面,把宿主入口地址指向plugin的入口地址,再把plugin最后一条跳转指令的地址修改为宿主原来的入口地址,即完成最简单的静态注入
1 0
- ELF可执行文件的静态注入
- 可执行文件elf的格式
- 可执行文件ELF的理解
- 可执行文件elf的格式介绍
- ELF可执行文件格式的理解
- ELF可执行文件格式的理解
- ELF可执行文件格式的理解
- ELF文件格式与动态链接/静态链接(Linux下 可执行文件的格式)
- elf可执行文件的理解(附上elf文件格式图解)
- 浅谈Linux的可执行文件格式ELF
- 3、可执行文件ELF && 几个重要的编译
- 可执行文件---prelink对ELF文件的影响
- 可执行文件(ELF)格式的理解
- Linux启动ELF可执行文件的过程
- 可执行文件(ELF)格式的理解
- PowerPC上ELF可执行文件的符号解析
- ELF可执行文件的解析与加载
- 可执行文件(ELF)格式的理解
- 使用spring注解@Controller @Service @Repository简化配置
- 【典型例题】复制文件
- android studio gradle dependencies 包存放在哪儿?
- SQL中where, group by, having的用法和区别
- 和你更多的第一次
- ELF可执行文件的静态注入
- [kuangbin带你飞]专题十二 基础DP1
- 前端问题(5)
- 【Python】学习笔记——-2.3、使用List和Tuple
- Android 如何退出整个应用程序?
- Fragment涉及的add、remove和replace方法和回退栈的关系详解
- 基础知识巩固,JavaScript数组复习
- table库
- 蓝桥杯 历届试题 分糖果 水模拟