在上一节 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相关推荐

  1. 用C语言编写万年历6,C语言编写万年历

    <C语言编写万年历>由会员分享,可在线阅读,更多相关<C语言编写万年历(8页珍藏版)>请在人人文库网上搜索. 1.C语言编写万年历 [要求]:1 程序运行后,首先在屏幕上显示主 ...

  2. c语言编写系统服务程序,C语言Windows服务程序编写-ServiceMain

    C语言编写的Windows服务程序,可以类比Linux/Unix环境下的daemon进程. 一下是VS2010环境下的demo: // windows_service.cpp : 定义控制台应用程序的 ...

  3. c语言编写modbus程序,C语言编写modbus协议

    <C语言编写modbus协议>由会员分享,可在线阅读,更多相关<C语言编写modbus协议(23页珍藏版)>请在人人文库网上搜索. 1.include / 字地址 0 - 25 ...

  4. c语言编写计算机软件,基于C语言的计算机软件编程分析.doc

    基于C语言的计算机软件编程分析.doc 基于C语言的计算机软件编程分析 摘要:C语言是一种重要的编程语言,在当今IT业的运用十分广泛.使用C语言来编写的程序简单.直接.准确,极大地推动了计算机软件的更 ...

  5. 用c语言编写字母循环,C语言输入循环字母

    广告 提供50多种云计算产品,包括云服务器和云. 创建一站式云产品试用服务,以帮助开发人员和企业以零门槛进入云环境. 是否有一种简单的方法来调用c脚本,以查看用户是否输入了英文字母中的字母?我在想这样 ...

  6. c语言编写五子棋报告,c语言报告五子棋.pdf

    C 语言课程设计报告 c 题目: 简单的 五子棋 设计者: 方阳 专业班级: 软件工程1303班 学号: 311309060324 指导老师: 刘洁 所属系部: 计算机学院 2014年6月25 日 河 ...

  7. 用c语言编写实心菱形,C语言编写内置菱形的程序

    C语言编写内置菱形的程序 最近迷上了用C语言编写图形的输出程序,有矩形的.三角形.等腰三角形,平行四边形.菱形.沙漏形.今天尝试着将菱形内置到矩形中,结果成功了,下面将快乐分享给大家,也希望广大C程序 ...

  8. 图书馆管理系统利用c语言编写,图书馆管理系统 c语言编写.doc

    图书馆管理系统 c语言编写 #include "stdio.h"#include "stdlib.h"#include "conio.h"# ...

  9. 编程是将c语言编写的源程序,C语言程序设计基础教程习题答案20120319.doc

    习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. 在C语言中,输入操作是由库函数__scanf ...

  10. C语言编写程序助手,C语言代码实例助手下载

    c语言代码实例助手是一款简单专业的C语言学习助手软件,该软件可以帮助用户执行和调试用户编写的代码,同时还内置有多种入门学习代码,还为用户整合了C语言学习过程中可以遇到的问题,其中包括入门代码.算法.图 ...

最新文章

  1. python调用api做用户登录认证_(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌...
  2. mysql 保留两位小数
  3. [存储引擎基础知识]InnoDB与MyISAM的六大区别(非原创)
  4. 2021杭州·云栖大会来了!门票免费预约!
  5. 剑指offer-二进制中1的个数
  6. 又一家互联网咖啡品牌要凉:papi酱、李诞曾代言,融资4亿打水漂
  7. 02-neo4j的基本命令
  8. python oracle orm_Python - ORM(数据库相关)
  9. GDAL源码剖析(二)之编译说明
  10. java创建gitlab账户_GitLab不会创建新的存储库
  11. AJAX请求中payload和formdata两种方式
  12. 基于FPGA的电梯控制器设计(任意楼层)
  13. 文本特征提取:词袋模型/词集模型,TF-IDF
  14. 如何生成dll文件 采用VS2017生成dll文件(动态库文件)和lib文件(静态库文件)以C语言为例
  15. html5 div 颜色代码,div 字体颜色
  16. Layui同一个表单中放置两个按钮,提交问题
  17. c语言 求矩阵各行元素之和
  18. An Actor–Critic based controller for glucose regulation in type 1 diabetes
  19. 三星530换固态硬盘_2015款21.5寸苹果I MAC换SSD固态硬盘过程分享
  20. 第15讲:Python列表对象的反转与排序

热门文章

  1. 如何让计算机两个用户使用不同步,如何实现两台或多台电脑远程修改文件同步更新?...
  2. php多线程是什么意思,多线程是什么意思
  3. 把百度网站设为首页_网站百度推广效果好不好?怎样才能把网站推广到百度首页?...
  4. express 项目生成器_用于项目的Express模板生成器(2)| 应用程序结构研究
  5. 终极解密输入网址按回车到底发生了什么?
  6. 面试官:不会看SQL执行计划,简历也敢写精通SQL优化?
  7. 清空session的方法
  8. Modbus通信协议之CRC16冗余循环校验函数
  9. Kubernetes 1.20 报错:“open /run/flannel/subnet.env: no such file or directory“
  10. CentOS7 源码编译安装NodeJS 最新版本Shell脚本