Linux 的简单钩子
在Windows的游戏外挂开发上,钩子(hook)是一个很常见的技术。这里我们不想讨论钩子是什么意思和在Windows上是如何实现的,只是来简单地学习一下Linux的钩子。
首先来确定一个函数,要一个没有多大危害的,那就先试试 time()。
我们写一个与time同名的函数:
注意:time()为linux的系统函数
hook.c
----------------------------
#include <stdio.h>
long time(void*unused)
{
printf("\nHOOK!!!\n");
return1234567;
}
----------------------------
这里我们用不着管他到底是什么参数,只要每个参数和原来参数的长度匹配即可。
(PS:最可恶的是将read和write给hook了!!)
好吧,再来写一个测试程序(这个程序很无辜,他不知道time已经被hook了)
test.c
----------------------------
#include <stdio.h>
#include <time.h>
int main()
{
longtimeval =time(NULL);
printf("%d", timeval);
return0;
}
----------------------------
现在就是见证奇迹的时刻
编译
c99 -o hook.so hook.c -fPIC --shared#编译为共享库
c99 -otesttest.c
编译
####################
./test
1310443885
####################
LD_PRELOAD=~/hook.so ./time
HOOK!
1234567
无辜的time就这样被……
更高级的hook:使用awk或sed在$SHELL + rc文件里面寻找有没有LD_PRELOAD,没有就设置,这样所有的程序都被hook了。。。
Linux 的简单钩子相关推荐
- 39条常见的Linux系统简单面试题
39条常见的Linux系统简单面试题 本文主要分享39条常见的Linux系统简单面试题,其中包括如何看当前Linux系统有几颗物理CPU和每颗CPU的核数.如何实时查看网卡流量为多少等等,希望对你有所 ...
- Linux下简单的邮件服务器搭建
Linux下简单的邮件服务器搭建 电子邮件服务简介 电子邮件是因特网上最为流行的应用之一,而邮件服务器是一种用来负责电子邮件收发管理的设备,它构成了电子邮件系统的核心. 电子邮件系统的组成 MUA( ...
- linux图形图像三剑客,就linux三剑客简单归纳
就linux三剑客简单归纳:1:awk 习题1:用 awk 中查看服务器连接状态并汇总 netstat-an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a,s ...
- Linux 指令简单将***IP列入iptables 限制范围
Linux 指令简单将***IP列入iptables 限制范围 今天部分服务器收到真IP的非SYN***,郁闷. netstat -an | grep -v LISTEN | awk '{print ...
- linux下简单的备份的脚本 2 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4577034 之前写过 linux下简单 ...
- linux驱动简单介绍
linux驱动简单介绍 驱动基本介绍 驱动.顾名思义就是"驱使硬件设备行动".设备驱动与底层硬件之间打交道,按照硬件设备的具体操作方式来读写设备寄存器,最终完成一系列操作. 设备 ...
- Linux C简单的web服务器
Linux C简单的web服务器 目录 Linux C简单的web服务器 一.基础类型重命名 二.包裹函数(wrap.h/wrap.c 主要是网络通讯和多线程的包裹函数) 三.服务端程序(web_se ...
- linux写入系统状态到文件夹,实验二 Linux系统简单文件操作命令
*实验二** Linux系统简单文件操作命令 项目内容 这个作业属于哪个课程 这个作业的要求在哪里 学号-姓名 17041518-孙小文 作业学习目标 学习在Linux系统终端下进行命令行操作 :掌握 ...
- kali Linux的简单介绍
kali Linux的简单介绍 Kali Linux是基于Debian 的Linux发行版,设计用于数字取证操作系统.Back Track是他们之前写的用于取证的Linux发行版.Kali Linux ...
最新文章
- 详解何恺明团队最新作品:源于Facebook AI的RegNet
- java元空间扩容_JVM元空间(Metaspace)
- 肝!分享这3个京东实战项目!(知识图谱拿走不谢)
- Bengio:我留在学术圈为全人类作贡献,而不是为某一个公司赚钱
- VB如何读取快捷方式的目标路径
- angular页面打印局部功能实现方法思考
- 好题汇总(持续更新)
- Vue.js 基础入门
- 苹果电脑安装双系统有必要吗?
- 他下班时间写出4本书,2年引导几十万人踏入网络安全行业
- 申万一级行业指数是什么?
- MySQL数据表中的数据单表查询
- 华为手机总是弹出风险提示
- 人机交互技术课程实验报告《社交点评APP》系统移动界面分析报告
- PacketTracer使用及网络测试命令
- 游戏文件服务器,游戏服务器文件
- 简单到出人意料的CNN图像分类策略
- 迪克斯特拉算法——算法图解
- android studio 7200u,#本站首晒# 多图杀猫 华为MateBook X上手体验
- 非线性模型转换为线性模型平滑数据处理
热门文章
- 史上最强Android 开启照相或者是从本地相册选中一张图片以后先裁剪在保存并显示的讲解附源码...
- foreman架构的引入6-整合puppetmaster
- 高性能编程之IO复用之epoll
- Activity端详
- V8 JavaScript 引擎 6.6 发布,异步性能大幅提升
- DevExtreme 移动跨平台开发 C#语言
- 免费的JavaScript书籍资源
- iservice封装有哪些方法_Java基础之类与对象、封装、构造方法·6(重点)
- c语言数字分解一个数,关于一道分解整数为N个连数整数的编程题
- 集群起不来oracle,Oracle11g rac 集群无法启动分析及处理