zoukankan      html  css  js  c++  java
  • 反调试手法之CreateProcess反调试

                  反调试手法之CreateProcess反调试

    在学习Win32 创建进程的时候.我们发现了有一个进程信息结构体. STARTUPINFO. 这个结构体可以实现反调试.

    具体CreateProcess可以参考上一篇博客.:  https://www.cnblogs.com/iBinary/p/9571577.html

    一丶实现反调试需要的东西.

    假设我们要实现反调试. 那么我们需要一个API

    GetStartupInfo (STARTUPINFO)  使用此API可以在进程启动的时候获取启动信息结构体

    二丶实现反调试的具体思路

      1.我们的程序中调用Getstartupinfo API来获取启动时的启动信息.

      2.判断启动信息结构体的值.是否是我们预期的.如果不是在调用 ExitProcess结束进程.

      3.如果是调试器启动我们的程序.那么启动信息结构体的信息肯定是不同了.我们可以做实验.

    测试:

      如果是桌面管理器打开. 

    如果是调试器打开.

    三丶编码实现反调试

    代码很简单.如下.

    #include <stdio.h>
    #include <stdlib.h>
    #include <Windows.h>
    
    int main()
    {
        STARTUPINFO si;
        si.cb = sizeof(si);
    
        GetStartupInfo(&si);
    
        if (si.dwFlags != 1)
        {
            ExitProcess(0);
        }
        printf("程序没有被反调试
    ");
        system("pause");
        return 0;
    }

    测试. 没有反调试的时候打开.

    调试器打开. PS: 调试器打开会退出. 并且不会输出内容. 这个属于简单的反调试.如果不知道有可能也过不了. 当然攻防对抗.看谁的基础扎实. 谁更厉害了.

  • 相关阅读:
    2017年第八蓝桥杯C/C++ A组国赛 —— 第二题:生命游戏
    451. 根据字符出现频率排序
    剑指 Offer 40. 最小的k个数
    list使用详解
    STL---priority_queue
    1046. 最后一块石头的重量
    739. 每日温度
    921. 使括号有效的最少添加
    STL----stack
    173. 二叉搜索树迭代器
  • 原文地址:https://www.cnblogs.com/iBinary/p/9571694.html
Copyright © 2011-2022 走看看