Linux2.6用户态API HooK入门
API Hook,传说中的API钩子,是指神不知鬼不觉地替换掉标准系统API的方法,Hook技术在Windows下面已经发展得登峰造极了(windows平台上常见的hook方式有导入导出表、vehseh、inline等等)。
本文编写目的是学习Linux下如何使用Ptrace动态注入进程入门,本文采用手动gdb的方式和修改运行指令,进行hook,控制进程的运行。本文以hook /bin/bash的chdir函数调用为切入点。包含objdump使用、gdb修改运行指令和进程文件ELF解析。
2.手工过程
1.
2.
2.1. 环境
[root@10 ~]# uname -a
Linux 10.12.198.932.6.32.57-tlinux_xenU-1.1.rc11-default #1 SMP Tue Jul 30 09:53:44 CST 2013x86_64 x86_64 x86_64 GNU/Linux
2.2. ELF简介
ELF(ExecutableLinkable Format)是Linux下的可执行格式,与windows下的PE(Portable Executable)格式一样,都是COFF(Common File Format)文件格式的变种。在Linux下除了可执行文件,编译过程中产生的目标文件(.o文件),动态链接文件(.so文件),静态链接库文件(.a文件),核心转储文件(Core Dump File)都按照ELF格式存储。“.got”(Global Offset Table)和“.plt”(Procedure Linkage Table)
2.3. Hook步骤
a.获得/bin/bash的.got和.got.plt地址
objdump -h/bin/bash查看bash的elf结构:
/bin/bash: file format elf64-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
0 .interp 0000001c 0000000000400200 0000000000400200 00000200 2**0

本文介绍了在Linux2.6中使用Ptrace动态注入进程,以手动方式hook /bin/bash的chdir函数。通过objdump查看ELF结构,利用gdb设置断点,控制进程运行。详细步骤包括获取.got和.got.plt地址,修改PLT条目,以及在gdb中恢复和继续执行。

被折叠的 条评论
为什么被折叠?



