zoukankan      html  css  js  c++  java
  • 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<stdio.h>
    #include<stdlib.h>
    #include<Windows.h>
    #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,需要一个二级指针

  • 相关阅读:
    LINUX系列:Shell命令
    java程序猿必须掌握的4种线程池
    JAVA编程:Lock线程锁
    Spring框架之IOC的基本配置
    浅谈Java中的内部类
    [XDFZDay2]NOIP模拟
    [XDFZ集训Day1]NOI2020模拟1
    CSP2019游记
    11.11-11.12 CSP模拟总结
    [BJOI2019]排兵布阵
  • 原文地址:https://www.cnblogs.com/mofei1999/p/11762264.html
Copyright © 2011-2022 走看看