C/C++ 如何劫持别人家的命令||函数||程序(只能对于window而言)
2015-03-22 17:12
453 查看
要实现下面程序,首先我们需要三个文件 detours.h ,detours.lib ,detver.h(可以去网上下载)
1. 首先让我们看看,一个最简单的C程序,如何劫持system函数.
截图:
结果显示。第一个system实现了,但是第二个system被劫持,无法执行、
2. 如果相对其他的程序或者软件劫持的话,只需要生成动态库(.dll)形式。注入到该程序或者软件模块中,这样就可以了!! 做到这儿,是不是再加上一点点线程的知识,就有想做一个桌面锁的冲动呀!
1. 首先让我们看看,一个最简单的C程序,如何劫持system函数.
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> #include"detours.h" //#include"detver.h" #pragma comment(lib , "detours.lib") // 存储函数指针地址 //指针分为:一般指针,多级指针。 指针函数,函数指针,指针数组 。数组指针。 //static int(*poldsystem) (const char * _Command)=system; static int( *poldsystem )(const char * _Command) = system; //自己实现一个system函数 int mysystem( const char * _Command){ const char * ps = NULL; ps = strstr(_Command ,"calc"); if (ps != NULL) printf("%s 已经被劫持啦!\n", _Command); else printf("run run run 北鼻 !"); return 1; }; //开始拦截 void Hook(){ DetourRestoreAfterWith(); //恢复初始状态 DetourTransactionBegin(); //拦截开始 DetourUpdateThread(GetCurrentThread()); //刷新当前线程 //此处下面填写自己想要拦截的函数 DetourAttach((void **)&poldsystem, mysystem); //实现函数拦截 DetourTransactionCommit(); //提交事务,拦截生效 } //撤销拦截 void UnHook() { DetourTransactionBegin(); //拦截开始 DetourUpdateThread(GetCurrentThread()); //刷新当前线程 DetourDetach((void **)&poldsystem, mysystem); DetourTransactionCommit(); } int main( void ) { system("calc"); Hook(); system("tasklist"); UnHook(); getchar(); //system("pause"); return 0; }
截图:
结果显示。第一个system实现了,但是第二个system被劫持,无法执行、
2. 如果相对其他的程序或者软件劫持的话,只需要生成动态库(.dll)形式。注入到该程序或者软件模块中,这样就可以了!! 做到这儿,是不是再加上一点点线程的知识,就有想做一个桌面锁的冲动呀!
相关文章推荐
- 如何用windbg + Very Sleepy打造window平台的C++程序免费调优工具(profiler) .
- JNI中在被调用的C/C++函数中如何访问Java程序中的类,并编写应用实例
- 对于刚接触C++来说,如何入手一个陌生的程序
- 转载: 如何在MATLAB 的MCC 命令 生成C/C++ 程序
- 【c/c++】如何调用【Window】cmd命令行命令并获取命令行的输出内容
- c++程序里如何调用MATLAB中的函数
- 用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数?(不用sizeof()函数求当前主机上的一个int占用几个字节)
- 如何配置才能使用cl命令编译C/C++程序?
- 如何用windbg + Very Sleepy打造window平台的C++程序免费调优工具(profiler)
- 如何配置才能使用cl命令编译C/C++程序?
- c++里的system()函数调用系统命令如何获取打印信息
- 如何将C/C++程序转译成Delphi(五)
- [C++] 如何在 C++ Builder 3.0 下编译含有 MFC 的程序?
- 一小段C++程序,关于ltoa函数的
- 如何将C/C++程序转译成Delphi(二)
- 如何将C/C++程序转译成Delphi(六)
- 如何将C++程序转为Pascal语法
- 如何将C/C++程序转译成Delphi(三)
- 如何编写易于移植的C++ 程序
- 请教如何将c++程序转换成java程序?