首页 > 系统相关 >8.7 父进程检测反调试

8.7 父进程检测反调试

时间:2023-09-27 09:26:50浏览次数:30  
标签:return 8.7 检测 PID pe32 hProcessSnap 进程 调试

首先这是一种比较奇特的反调试思路,通过检测自身父进程来判定是否被调试,原理非常简单,我们的系统在运行程序的时候,绝大多数应用程序都是由Explorer.exe这个父进程派生而来的子进程,也就是说如果没有被调试其得到的父进程就是Explorer.exe的进程PID,而如果被调试则该进程的父进程PID就会变成调试器的PID值,通过对父进程的检测即可实现检测是否被调试的功能。

#include <Windows.h>
#include <stdio.h>
#include <tlhelp32.h>

int IsDebug()
{
    DWORD ExplorerId = 0;
    PROCESSENTRY32 pe32 = { 0 };
    DWORD ProcessId = GetCurrentProcessId();

    GetWindowThreadProcessId(FindWindow("Progman", NULL), &ExplorerId);

    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    if (hProcessSnap != INVALID_HANDLE_VALUE)
    {
        pe32.dwSize = sizeof(PROCESSENTRY32);
        Process32First(hProcessSnap, &pe32);
        do
        {
            // 先判断是不是我们自己进程的PID
            if (ProcessId == pe32.th32ProcessID)
            {
                // 判断父进程是否是 Explorer.exe
                if (pe32.th32ParentProcessID != ExplorerId)
                {
                    return TRUE;
                }
            }
        } while (Process32Next(hProcessSnap, &pe32));
    }
    return FALSE;
}

int main(int argc, char * argv[])
{
    if (IsDebug())
    {
        printf("[-] 进程正在被调试 \n");
    }

    system("pause");
    return 0;
}

标签:return,8.7,检测,PID,pe32,hProcessSnap,进程,调试
From: https://www.cnblogs.com/LyShark/p/17731843.html

相关文章

  • 8.9 RDTSC时钟检测反调试
    RDTSC时钟检测同样可实现反调试检测,使用时钟检测方法是利用rdtsc汇编指令,它返回至系统重新启动以来的时钟数,并且将其作为一个64位的值存入EDX:EAX寄存器中,通过运行两次rdstc指令,然后计算出他们之间的差值,即可判定对方是否在调试我们的程序。可以利用时钟检测技术来检测程序是否被......
  • 8.8 异常处理机制反调试
    通常可以通过在程序中设置异常处理函数,并在其中发起一个异常,然后判断程序是否已经被调试器附加来实现反调试。如果异常处理函数没有被触发,则说明程序已经被调试器附加;如果异常处理函数被触发,则说明程序没有被调试器附加。安装异常处理函数并手动触发,此时如果被调试器附加,则会不走......
  • 未连接:有潜在的安全问题 Firefox 检测到潜在的安全威胁,并因xxxx 要求安全连接而没有
    重新安装电脑系统后,用火狐浏览器访问公司网站,出现登录框提示:未连接:有潜在的安全问题 Firefox检测到潜在的安全威胁,并因xxxx要求安全连接而没有继续。不过此时使用edge就是正常的。如果坚持使用火狐,解决办法:只需要在浏览器中输入:about:config回车,然后设置security.......
  • 模拟.NET应用场景,综合应用反编译、第三方库调试、拦截、一库多版本兼容方案
    免责声明使用者本人对于传播和利用本公众号提供的信息所造成的任何直接或间接的后果和损失负全部责任。公众号及作者对于这些后果不承担任何责任。如果造成后果,请自行承担责任。谢谢!大家好,我是沙漠尽头的狼。本文首发于Dotnet9,结合前面两篇(如何在没有第三方.NET库源码的情......
  • 成功实现FaceTime语音,FaceTime视频,FaceTime数据筛选,检测手机号是否开通FaceTime的
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署......
  • android adb调试
    1、无线方式一cd/dD:\Android\sdk\platform-toolstcpip5555(需手机线下连接执行)adbconnect192.168.0.1402、无线方式二cd/dD:\Android\sdk\platform-toolsadbpair192.168.0.140:42319adbconnect192.168.0.140:40717 ......
  • Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试
    Xmake是一个基于Lua的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了Lua运行时。它使用xmake.lua维护项目构建,相比makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们......
  • 磁盘坏道检测脚本
    磁盘坏道检测脚本说明:hp服务器有一定概率执行命令会卡主,#!/bin/bash#utf-8#说明:其他型号服务器获取raid信息通过MegaCli#说明:HP服务器获取raid信息通过hpacucli#安装包信息定义HP_SSACLI_COMMAND_RPM_NAME="hpacucli-9.40-12.0.x86_64.rpm"HP_SSACLI_COMMAND_RP......
  • 【开发/调试工具】【串口工具】不同串口软件如何生成带时间戳的日志
    https://blog.csdn.net/qxhgd/article/details/126152913 Xshell在新建会话属性页面,可配置日志的日期格式:  IPOP可根据需要调整标签间隔时间: ......
  • phpstorm apache php xdebug调试超时设置
    用phpstormxdebugapache调试php代码的时候总是一分钟就超时。修改配置文件解决1.php.ini设置xdebug,增加 #超时时间改大一点xdebug.remote_cookie_expire_time=3600max_execution_time=3600max_input_time=3600default_socket_timeout=3600 2.在apache配置文......