前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >反调试手法之CreateProcess反调试

反调试手法之CreateProcess反调试

作者头像
IBinary
发布2018-09-28 15:11:58
1.1K0
发布2018-09-28 15:11:58
举报
文章被收录于专栏:逆向技术逆向技术

              

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

具体CreateProcess可以参考上一篇博客.:  https://cloud.tencent.com/developer/article/1348764

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

假设我们要实现反调试. 那么我们需要一个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("程序没有被反调试\r\n");
    system("pause");
    return 0;
}

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一丶实现反调试需要的东西.
  • 二丶实现反调试的具体思路
  • 三丶编码实现反调试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档