要实现下面程序,首先我们需要三个文件 detours.h ,detours.lib ,detver.h(可以去网上下载)

1. 首先让我们看看,一个最简单的C程序,如何劫持system函数.

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<windows.h>
 5 #include"detours.h"
 6 //#include"detver.h"
 7 #pragma comment(lib , "detours.lib")
 8
 9 // 存储函数指针地址
10 //指针分为:一般指针,多级指针。 指针函数,函数指针,指针数组 。数组指针。
11 //static int(*poldsystem) (const char * _Command)=system;
12 static int( *poldsystem )(const char * _Command) = system;
13 //自己实现一个system函数
14 int mysystem( const char *    _Command){
15     const char * ps = NULL;
16          ps = strstr(_Command ,"calc");
17     if (ps != NULL)
18         printf("%s 已经被劫持啦!\n", _Command);
19     else
20         printf("run run run 北鼻 !");
21     return 1;
22 };
23
24 //开始拦截
25 void Hook(){
26     DetourRestoreAfterWith();   //恢复初始状态
27     DetourTransactionBegin();   //拦截开始
28     DetourUpdateThread(GetCurrentThread()); //刷新当前线程
29     //此处下面填写自己想要拦截的函数
30     DetourAttach((void **)&poldsystem, mysystem);    //实现函数拦截
31     DetourTransactionCommit(); //提交事务,拦截生效
32 }
33
34 //撤销拦截
35 void UnHook() {
36     DetourTransactionBegin();   //拦截开始
37     DetourUpdateThread(GetCurrentThread()); //刷新当前线程
38     DetourDetach((void **)&poldsystem, mysystem);
39     DetourTransactionCommit();
40 }
41 int main( void ) {
42
43     system("calc");
44     Hook();
45     system("tasklist");
46     UnHook();
47     getchar();
48     //system("pause");
49  return 0;
50 }

截图:

结果显示。第一个system实现了,但是第二个system被劫持,无法执行、

2.   如果相对其他的程序或者软件劫持的话,只需要生成动态库(.dll)形式。注入到该程序或者软件模块中,这样就可以了!!  做到这儿,是不是再加上一点点线程的知识,就有想做一个桌面锁的冲动呀!

C/C++ 如何劫持别人家的命令||函数||程序(只能对于window而言)相关推荐

  1. 利用freopen()函数和fc命令简化程序调试

    大家在参加ACM比赛或者参加c/c++实验技能竞赛的时候,如果遇到大量的输入和大量的输出时,调试起来很不方便.一来如果结果不正确的话,需要重复输入大量数据:二来如果大量输出的话,得仔细检查输出结果与正 ...

  2. mybatis 不同格式日期比较大小_怎样创建一个命令函数来获得不同国家和应用程序所要求的大多数日期格式...

    今天领导让我导出17年至19年的XX消费记录.还要按月汇总...我也醉了.查了各种资料都是说用convert(),再用 left截断.后来终于在生产库里边找到了format_date()函数.真不错, ...

  3. 基于Golang的CLI 命令行程序开发

    基于Golang的CLI 命令行程序开发 [阅读时间:约15分钟] 一. CLI 命令行程序概述 二. 系统环境&项目介绍&开发准备 1.系统环境 2.项目介绍 3.开发准备 三.具体 ...

  4. python命令行大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

  5. 命令逐行显示_在LoadRunner中执行命令行程序之:popen()取代system()

    >>>推荐阅读<<< 1.性能测试学习笔记-场景设计 2.性能测试的重要意义 3.性能分析流程及方法 4.应用系统性能调优之性能分析 在LoadRunner中执行命 ...

  6. 如何编写完美的 Python 命令行程序?

    这篇文章将教你如何编写完美的 Python 命令行程序,提高团队的生产力,让大家的工作更舒适. 作者 | Yannick Wolff 译者 | 弯月 责编 | 屠敏 出品 | CSDN(ID:CSDN ...

  7. Linux Bash命令关于程序调试详解

    转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...

  8. GDAL源码剖析(四)之命令行程序说明二

    接博客GDAL源码剖析(四)之命令行程序说明一http://blog.csdn.net/liminlu0314/article/details/6978589 其中有个nearblack,gdalbu ...

  9. python 代码命令大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

最新文章

  1. php的数组与字符串的转换函数整理
  2. 论文笔记:Group Equivariant Convolutional Networks
  3. [家里蹲大学数学杂志]第405期中国科学院数学与系统科学研究院2015年夏令营分析与代数试题...
  4. 【Python】Numpy包的安装使用
  5. java class获取type_java – 获取Class [Runtime-Type Token]的实例
  6. opencv如何读取仪表中的指针刻度
  7. 华南农业大学c语言上机实验答案,华南农业大学C语言上机实验答案.doc
  8. 【数据库原理实验(openGauss)】创建数据库、表和索引
  9. 拓端tecdat|R语言GGPLOT2绘制KOLMOGOROV-SMIRNOV KS检验图ECDF经验累积分布函数曲线可视化
  10. 润乾报表-单元格函数
  11. 自定义配置ros arduino bridge功能包集
  12. Mbps和MB/s之间的换算
  13. 爆破,抓不了图片验证码。
  14. 一款对程序员体验友好的浏览器翻译插件
  15. Android 11.0 12.0系统默认授予读写权限给第三方app
  16. 【读书笔记】《结构思考力》——李忠秋
  17. CS5265方案应用|TYPEC投屏方案| Type-C转HDMI4K60HZ转换方案
  18. db2 数据库配置HADR+TSA添加集群节点
  19. 结对编程分析——中小学数学卷子自动生成程序
  20. java校园医院门诊管理系统ssm

热门文章

  1. unity game和scene效果不一样_KTV装修设计:如何让消费者体验到不一样的KTV娱乐效果...
  2. 分布式是写出来的(六)
  3. python 库 全局变量_python局部变量和全局变量global
  4. 网络基础3-1(细谈IP协议头, 网络层,子网划分,路由选择,数据链路层,以太网帧格式,MAC地址,再谈ARP协议)
  5. 不带头结点的链表基础操作(初始化,增删改查)
  6. 数据结构之单链表——C++模板类实现
  7. 【计算机系统设计】实践笔记(3)改进数据通路:jr指令分析与实现
  8. Java内存区域分布
  9. 万字总结!springcloud分布式限流
  10. 面试加分项!程序员工作2年月薪12K,附架构师必备技术详解