C++ detours实现简单的系统函数拦截
来源:互联网 发布:广告法 数据来源 编辑:程序博客网 时间:2024/06/04 18:38
哎,将近半年没写了,失踪人口回归,因为博主参加工作了。之前上学的时候,看到很多在学校读书的大牛参加工作之后也很少更新博客,之前不以为意。现在发现确实是工作的空闲时间不如上学的时候,所以也想念以前在大学里面一个人在图书馆一台电脑一瓶矿泉水一天的时光,哈哈。但是呢,有空写写博客,也不是一件坏事呢。
今天实现一个简单的调用detours.lib的静态库实现一个对系统函数(system)的拦截。
主要编程环境依旧是Visual Studio 2017。环境这东西嘛,都一样,哪个方便用哪个喽。
非常简单。按照道理是用Detours Express 3.0,但是官网好像都整合成一个了,也好。
官网detours的静态库下载地址:
下载完之后得到:
解压之后得到一堆文件:
然后打开VS2017的开发人员命令行:
然后进入这个文件夹的src目录下:
输入nmake 命令,编译里面的源文件得到相对应的静态库文件,这里和linux中的Makefile原理是一样的,只不过这里变成了Windows环境的编译。
然后把对应的头文件detours.h,detver.h和detours.lib文件放到你对应程序目录下。
1.
2.
3.
最后一步写出调用源码(注意:解决方案配置用Release模式)
gogogo.c:
#include<stdio.h>#include<stdlib.h>#include<Windows.h>#include"detours.h" //加载头文件#pragma comment(lib,"detours.lib");int (*poldsystem)(char const* _Command) = system; //记录原来函数的地址int newsystem(_In_opt_z_ char const* _Command) {printf("禁止执行%s",_Command);return 1;}void hook() {DetourRestoreAfterWith(); //恢复状态,避免反复拦截改变地址DetourTransactionBegin(); //开始拦截DetourUpdateThread(GetCurrentThread()); //拦截当前线程DetourAttach((void**)&poldsystem, newsystem); //拦截DetourTransactionCommit(); //生效}void main() {system("notepad");hook();system("notepad"); //禁止system打开记事本怎么办//需要借助detours修改代码区getchar();}
1.
2.
阅读全文
0 0
- C++ detours实现简单的系统函数拦截
- 利用detours劫持自己的系统函数
- 基于VC++用 Detours实现SendPtr的拦截HTTP
- Detours简介 (拦截x86机器上的任意的win32 API函数)
- Detours简介 (拦截x86机器上的任意的win32 API函数)
- Detours简介 (拦截x86机器上的任意的win32 API函数)
- 64位系统的Detours
- 64位系统的Detours
- 64位系统的Detours
- Detours 小试牛刀之拦截 API 函数(APIHook)
- API拦截之Detours
- 关于detours拦截api,导致的异常排查
- windows下的API拦截---利用detours库操作
- 使用Detours进行API拦截
- 利用Detours进行API拦截
- AOP/CGLIB学习:实现简单的注解权限系统(Annotation+拦截器)
- 3.struts的拦截简单实现
- Struts2中拦截器的简单实现
- A.I.人工智能
- idea项目导入myeclipse(基于git版本控制器)
- QT 添加资源文件
- LeetCode --- 2. Add Two Numbers
- HTML日期控件的使用
- C++ detours实现简单的系统函数拦截
- 算法练习2
- leetcode-month2-week8
- Java不定参数Object… obj 和 Object[] 的区别
- 作业一 顺序表
- 更改Windows鼠标滑轮滚动方向
- 了解Python 必备标准库
- Node.js学习笔记(二)
- JavaScript 闭包