c语言编写劫持dll,c语言-----劫持自己02
在上一节 c语言-----劫持原理01 已经叙述了劫持原理,下边正式进入劫持实战
1. 需要实现的功能
在c语言中
system("notepad") 可以打开一个记事本
system("mspaint") 可以打开画图工具
所以这次我们需要把 可以打开一个记事本 这个功能更改为 在控制台打印 "notepad"
可以打开画图工具 这个功能更改为 在控制台打印 "mspaint" ,即实现监控的日志功能
2. 需要的工具
vs2017
Detours
3. 劫持原理实现
(1) 查看system()函数定义
_DCRTIMP int __cdecl system(
_In_opt_z_ char const* _Command
);
去掉一些不需要的符号
int system( char const* _Command );
(2) 获取原system()的地址
int (*plodsystem)(char const* _Command) = system;
(3) 劫持后system()函数
int newsystem(char const* _Command){
printf("你执行的是:%s", _Command);
}
(4) 劫持函数
void hook(){
DetourRestoreAfterWith(); //恢复之前的状态
DetourTransactionBegin(); //开始劫持
DetourUpdateThread(GetCurrentThread());//更新当前线程
DetourAttach((void **)&plodsystem, newsystem);//劫持
DetourTransactionCommit(); //提交
}
(5) 修改vs配置 Debug -> Release
(6) 完整源代码
#include
#include
#include
#include "detours.h"
#pragma comment(lib,"detours.lib")
int (*plodsystem)(char const* _Command) = system;
int newsystem(char const* _Command){
printf("你执行的是:%s", _Command);
}
void hook(){
DetourRestoreAfterWith();
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach((void **)&plodsystem, newsystem);
DetourTransactionCommit();
}
int main(){
system("notepad");
hook();
system("notepad");
return 0;
}
3. 解释说明
system()函数是一个int类型的函数 int system( char const*_Command );
所以需要一个一级函数指针plodsystem
获取plodsystem的地址 &plodsystem,需要一个二级指针
c语言编写劫持dll,c语言-----劫持自己02相关推荐
- 用C语言编写万年历6,C语言编写万年历
<C语言编写万年历>由会员分享,可在线阅读,更多相关<C语言编写万年历(8页珍藏版)>请在人人文库网上搜索. 1.C语言编写万年历 [要求]:1 程序运行后,首先在屏幕上显示主 ...
- c语言编写系统服务程序,C语言Windows服务程序编写-ServiceMain
C语言编写的Windows服务程序,可以类比Linux/Unix环境下的daemon进程. 一下是VS2010环境下的demo: // windows_service.cpp : 定义控制台应用程序的 ...
- c语言编写modbus程序,C语言编写modbus协议
<C语言编写modbus协议>由会员分享,可在线阅读,更多相关<C语言编写modbus协议(23页珍藏版)>请在人人文库网上搜索. 1.include / 字地址 0 - 25 ...
- c语言编写计算机软件,基于C语言的计算机软件编程分析.doc
基于C语言的计算机软件编程分析.doc 基于C语言的计算机软件编程分析 摘要:C语言是一种重要的编程语言,在当今IT业的运用十分广泛.使用C语言来编写的程序简单.直接.准确,极大地推动了计算机软件的更 ...
- 用c语言编写字母循环,C语言输入循环字母
广告 提供50多种云计算产品,包括云服务器和云. 创建一站式云产品试用服务,以帮助开发人员和企业以零门槛进入云环境. 是否有一种简单的方法来调用c脚本,以查看用户是否输入了英文字母中的字母?我在想这样 ...
- c语言编写五子棋报告,c语言报告五子棋.pdf
C 语言课程设计报告 c 题目: 简单的 五子棋 设计者: 方阳 专业班级: 软件工程1303班 学号: 311309060324 指导老师: 刘洁 所属系部: 计算机学院 2014年6月25 日 河 ...
- 用c语言编写实心菱形,C语言编写内置菱形的程序
C语言编写内置菱形的程序 最近迷上了用C语言编写图形的输出程序,有矩形的.三角形.等腰三角形,平行四边形.菱形.沙漏形.今天尝试着将菱形内置到矩形中,结果成功了,下面将快乐分享给大家,也希望广大C程序 ...
- 图书馆管理系统利用c语言编写,图书馆管理系统 c语言编写.doc
图书馆管理系统 c语言编写 #include "stdio.h"#include "stdlib.h"#include "conio.h"# ...
- 编程是将c语言编写的源程序,C语言程序设计基础教程习题答案20120319.doc
习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. 在C语言中,输入操作是由库函数__scanf ...
- C语言编写程序助手,C语言代码实例助手下载
c语言代码实例助手是一款简单专业的C语言学习助手软件,该软件可以帮助用户执行和调试用户编写的代码,同时还内置有多种入门学习代码,还为用户整合了C语言学习过程中可以遇到的问题,其中包括入门代码.算法.图 ...
最新文章
- python调用api做用户登录认证_(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌...
- mysql 保留两位小数
- [存储引擎基础知识]InnoDB与MyISAM的六大区别(非原创)
- 2021杭州·云栖大会来了!门票免费预约!
- 剑指offer-二进制中1的个数
- 又一家互联网咖啡品牌要凉:papi酱、李诞曾代言,融资4亿打水漂
- 02-neo4j的基本命令
- python oracle orm_Python - ORM(数据库相关)
- GDAL源码剖析(二)之编译说明
- java创建gitlab账户_GitLab不会创建新的存储库
- AJAX请求中payload和formdata两种方式
- 基于FPGA的电梯控制器设计(任意楼层)
- 文本特征提取:词袋模型/词集模型,TF-IDF
- 如何生成dll文件 采用VS2017生成dll文件(动态库文件)和lib文件(静态库文件)以C语言为例
- html5 div 颜色代码,div 字体颜色
- Layui同一个表单中放置两个按钮,提交问题
- c语言 求矩阵各行元素之和
- An Actor–Critic based controller for glucose regulation in type 1 diabetes
- 三星530换固态硬盘_2015款21.5寸苹果I MAC换SSD固态硬盘过程分享
- 第15讲:Python列表对象的反转与排序
热门文章
- 如何让计算机两个用户使用不同步,如何实现两台或多台电脑远程修改文件同步更新?...
- php多线程是什么意思,多线程是什么意思
- 把百度网站设为首页_网站百度推广效果好不好?怎样才能把网站推广到百度首页?...
- express 项目生成器_用于项目的Express模板生成器(2)| 应用程序结构研究
- 终极解密输入网址按回车到底发生了什么?
- 面试官:不会看SQL执行计划,简历也敢写精通SQL优化?
- 清空session的方法
- Modbus通信协议之CRC16冗余循环校验函数
- Kubernetes 1.20 报错:“open /run/flannel/subnet.env: no such file or directory“
- CentOS7 源码编译安装NodeJS 最新版本Shell脚本