HOOK如何用C++调用detours劫持WindowsAPI?

 

00 detours

detours是微软亚洲研究院出品的信息安全产品,用于劫持

可用Detours Express 3.0编译生成detours.lib

01 劫持MessageBoxW()

vs2015创建空项目,源文件中添加msg.c

把detours.h、detours.lib、detver.h文件复制到msg.c同目录下

输入MessageBoxW()右键选择查看定义

HOOK如何用C++调用detours劫持WindowsAPI?

 

复制MessageBoxW()的函数声明

HOOK如何用C++调用detours劫持WindowsAPI?

 

修改函数声明,去掉多余的调用约定,修改为一个指向原来函数的指针

并在前面加上static防止影响其他源文件

HOOK如何用C++调用detours劫持WindowsAPI?

 

创建一个同类型的函数以便拦截是调用

HOOK如何用C++调用detours劫持WindowsAPI?

 

添加静态库文件

#pragma comment(lib,"detours.lib")

调用劫持代码

HOOK如何用C++调用detours劫持WindowsAPI?

 

vs2015解决方案配置修改为Release

HOOK如何用C++调用detours劫持WindowsAPI?

 

msg.c:劫持MessageBoxW()完整代码

HOOK如何用C++调用detours劫持WindowsAPI?

 

运行结果显示第一个MessageBoxW()运行成功第二个被劫持

02 拦截system函数

查看system()定义

HOOK如何用C++调用detours劫持WindowsAPI?

 

修改为一个指向system函数的指针

HOOK如何用C++调用detours劫持WindowsAPI?

 

程序完整测试代码

HOOK如何用C++调用detours劫持WindowsAPI?

 

03 dll注入注入正在运行的进程劫持system函数

vs创建一个MFC程序

*解决方案配置选择Release

HOOK如何用C++调用detours劫持WindowsAPI?

 

工具箱中拖入button并添加代码,并生成exe文件

HOOK如何用C++调用detours劫持WindowsAPI?

 

detours.h、detours.lib、detver.h文件复制到dll.c同目录下

修改属性为dll,配置设为Release

HOOK如何用C++调用detours劫持WindowsAPI?

 

编写dll.c生成jiechi.dll文件禁止button调用calc

HOOK如何用C++调用detours劫持WindowsAPI?

 

运行生成的mfc应用程序,点击按钮可以调出计算器

用dll注入工具把生成的jiechi.dll注入到mfc应用程序进程中

HOOK如何用C++调用detours劫持WindowsAPI?

 

这时system函数就被劫持了,程序无法调出计算器

04 劫持CreateProcessW()

CreateProcessW()可以创建进程,此函数被劫持后将无法打开应用程序

CreateProcessW()函数声明

HOOK如何用C++调用detours劫持WindowsAPI?

 

编译生成dll文件并注入到explorer.exe进程中

HOOK如何用C++调用detours劫持WindowsAPI?

 

最后,如果你想学c++,加小编学习群:825414254获取素材资料以及开发工具和听课权限!(如果不是学习c++的同学非诚勿扰哦!)

HOOK如何用C++调用detours劫持WindowsAPI?

相关文章:

  • 2022-12-23
  • 2022-02-04
  • 2021-12-26
  • 2022-02-05
  • 2021-05-16
  • 2021-08-25
  • 2021-10-17
  • 2021-06-29
猜你喜欢
  • 2022-01-14
  • 2022-12-23
  • 2022-12-23
  • 2021-05-22
  • 2021-07-07
  • 2021-08-02
相关资源
相似解决方案