8.5 DebuggerPresent

debuggerpresent · 浏览次数 : 11

小编点评

Sure, here's the summary you requested: **CheckRemoteDebuggerPresent** is a Windows function that can be used to determine if a process is currently being debugged. It takes two parameters: * **hProcess:** A handle to the process you want to check. * **bDebug:** A pointer to a boolean variable. **How it works:** * If the process is being debugged, the `bDebug` variable will be set to `TRUE`. * Otherwise, it will be set to `FALSE`. **Example usage:** ```c #include #include BOOL CheckRemoteDebuggerPresent(HANDLE hProcess, PBOOL bDebug) { HINSTANCE hModule = GetModuleHandle("kernel32"); CHECK_REMOTE_DEBUG_PROCESS CheckRemoteDebuggerPresent; return (CheckRemoteDebuggerPresent = (CHECK_REMOTE_DEBUG_PROCESS)GetProcAddress(hModule, "CheckRemoteDebuggerPresent")); } int main() { if (CheckRemoteDebuggerPresent(GetCurrentProcess(), &bDebug)) { printf("[-] 进程正在被调试 \\"); } system("pause"); return 0; } ``` **Output:** ``` [-] 进程正在被调试 ``` **Note:** * `CheckRemoteDebuggerPresent` is only available on Windows systems. * The `kernel32` module is a core Windows module that provides support for kernel-level functions. * The `PBOOL` type is a pointer to a boolean variable.

正文

CheckRemoteDebuggerPresent 也是一个微软提供的反调试函数,该函数可以在本地或者远程进程中使用。函数接收两个参数进程句柄和一个指向布尔值的指针。如果指定的进程正在被调试,则函数会把指向布尔值的指针设为 TRUE,否则设为FALSE。

#include <stdio.h>
#include <windows.h>

// 定义指针
typedef BOOL(WINAPI *CHECK_REMOTE_DEBUG_PROCESS)(HANDLE, PBOOL);

BOOL CheckDebugger()
{
    BOOL bDebug = FALSE;
    CHECK_REMOTE_DEBUG_PROCESS CheckRemoteDebuggerPresent;

    HINSTANCE hModule = GetModuleHandle("kernel32");
    CheckRemoteDebuggerPresent = (CHECK_REMOTE_DEBUG_PROCESS)GetProcAddress(hModule, "CheckRemoteDebuggerPresent");

    HANDLE hProcess = GetCurrentProcess();

    CheckRemoteDebuggerPresent(hProcess, &bDebug);
    return bDebug;
}

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

    system("pause");
    return 0;
}

与8.5 DebuggerPresent相似的内容:

8.5 DebuggerPresent

CheckRemoteDebuggerPresent 也是一个微软提供的反调试函数,该函数可以在本地或者远程进程中使用。函数接收两个参数进程句柄和一个指向布尔值的指针。如果指定的进程正在被调试,则函数会把指向布尔值的指针设为 TRUE,否则设为FALSE。

Hyper-V 安装 CentOS 8.5

前言 Hyper-V安装文档:在 Windows 10 上安装 Hyper-V CentOS 系统下载:CentOS 国内镜像源 8.5.2111 作者:易墨 发布时间:2023.10.01 原文地址:https://www.cnblogs.com/morang/p/devops-hyperv-ce

Docker Compose V2 安装 ClickHouse v20.6.8.5 经验分享

前言 ClickHouse 是一款开源的分布式列式数据库管理系统,专门设计用于高性能的大数据分析和查询。 目前项目中用到的一个场景是将mongo的数据同步到clickhouse,使用clickhouse做报表,后续也将分享同步和使用方案 使用 Docker Compose 部署单机版,小项目和自己测

[转帖]CentOS8安装MySQL8详细教程,爬坑必备

https://www.ab62.cn/article/23022.html 安装环境 CentOS:8.5.2111MySQL:8.0.30 MySQL Community Server 安装过程 下载MySQL Yum Repository 官网查看MySQL的yum仓库列表,地址https:/

【Azure 应用服务】App Service 默认页面暴露Tomcat版本信息,存在安全风险

问题描述 在创建Azure App Service时,服务端的配置使用Java 8 + Tomcat 8.5。默认的根目录页面显示出App Service Tomcat版本信息,存在一定的安全隐患。 如何来避免这个问题呢? 问题解答 因为在初始创建App Service时,Azure会根据所选Sta

[转帖]信号

https://wenfh2020.com/2021/08/13/signal/ 编程中,需要经常处理信号,根据信号值查询对应的意思,为了方便查询记录一下。 1. 信号 1. 信号 图片来源:《深入理解计算机系统》- 8.5 信号。

5.8 汇编语言:汇编高效除法运算

通常情况下计算除法会使用`div/idiv`这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但Release模式下,除法运算指令会被特定的算法经过优化后转化为为乘法,这样就可以提高除法运算的效率。

.NET 8 Preview 5发布,了解一下Webcil 是啥

2023年6月13日 .NET 8 Preview 5,.NET 团队在官方博客发布了系列文章: Announcing .NET 8 Preview 5 ASP.NET Core updates in .NET 8 Preview 5 Announcing .NET MAUI in .NET 8 P

瀚高4.5.8的安装部署过程

瀚高4.5.8的安装部署过程 说明 大周末的写文档. 主要是备忘,之前写的太乱了. 本来想自己写一份, 但是怀疑找到了瀚高工程师的文档 准备直接学习一下: https://blog.csdn.net/qiuchenjun/article/details/125985256 感谢原作者 安装 rpm

[转帖]【MySQL 8】MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了

https://www.cnblogs.com/paul8339/p/17026571.html 阅读目录 账户与安全 索引增强 原子DDL操作 通用表达式(CTE) 其他 MySQL 8新特性选择MySQL 8的背景:MySQL 5.6已经停止版本更新了,对于 MySQL 5.7 版本,其将于 2