首页 > 其他分享 >8.8 异常处理机制反调试

8.8 异常处理机制反调试

时间:2023-09-27 09:23:19浏览次数:35  
标签:8.8 pBuff lpsetun 机制 异常 处理函数 调试 调试器

通常可以通过在程序中设置异常处理函数,并在其中发起一个异常,然后判断程序是否已经被调试器附加来实现反调试。如果异常处理函数没有被触发,则说明程序已经被调试器附加;如果异常处理函数被触发,则说明程序没有被调试器附加。

安装异常处理函数并手动触发,此时如果被调试器附加,则会不走异常处理流程,此时IsDebug将会返回默认的False,并直接走_asm call pBuff;在调试器不忽略int3中断的情况下,调试将会被终止。

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

BOOL Exceptioni = FALSE;

LONG WINAPI ExceptionFilter(PEXCEPTION_POINTERS ExceptionInfo)
{
    Exceptioni = TRUE;
    return EXCEPTION_CONTINUE_EXECUTION;
}

BOOL IsDebug()
{
    ULONG OldProtect = 0;
    LPTOP_LEVEL_EXCEPTION_FILTER lpsetun;
    
    // 安装自己实现的 ExceptionFilter 自定义异常处理函数
    lpsetun = SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ExceptionFilter);
    LPVOID pBuff = VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE);
    
    *((PWORD)pBuff) = 0xc3;
    
    VirtualProtect(pBuff, 0x1000, PAGE_EXECUTE_READ | PAGE_GUARD, &OldProtect);

    _asm call pBuff;                       // 如果被调试,则执行中断,不会进行异常处理
    SetUnhandledExceptionFilter(lpsetun);  // 恢复异常处理
    return Exceptioni;
}

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

    system("pause");
    return 0;
}

标签:8.8,pBuff,lpsetun,机制,异常,处理函数,调试,调试器
From: https://www.cnblogs.com/LyShark/p/17731848.html

相关文章

  • 537_如何不依靠U盘,使用手机制作一个PE?
    这是一篇原发布于2020-07-2013:15:00得益小站的文章,备份在此处。前言作为朋友圈里的(伪)搞机大佬,会利用PE装机绝对可以把小白唬住;生活在信息时代的我们,我们却不一定时常带着U盘,但手机绝对不可能落下,如果可以仅靠手机制作一个PE,岂不是妙哉!本文就将介绍利用DriveDroid在手机里......
  • 模拟.NET应用场景,综合应用反编译、第三方库调试、拦截、一库多版本兼容方案
    免责声明使用者本人对于传播和利用本公众号提供的信息所造成的任何直接或间接的后果和损失负全部责任。公众号及作者对于这些后果不承担任何责任。如果造成后果,请自行承担责任。谢谢!大家好,我是沙漠尽头的狼。本文首发于Dotnet9,结合前面两篇(如何在没有第三方.NET库源码的情......
  • Spring事务的传播机制
     https://www.bilibili.com/video/BV1hu411N7gA/?p=6&spm_id_from=pageDriver&vd_source=0d7b1712ce42c1a2fa54bb4e1d601d78......
  • 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,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们......
  • springMVC调用流程和springmvc工作机制和请求生命周期
    servlet工作模式客户端发送请求至客户端服务器启动并调用servletservlet根据请求生成响应内容并传回给服务器服务器返回给客户端servlet生命周期由容器控制,第一次请求时被加载,存活直到应用服务器关闭SpringMVC工作机制DispatcherServlet接受到request解析后到uri获取到h......
  • 【开发/调试工具】【串口工具】不同串口软件如何生成带时间戳的日志
    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配置文......
  • 易基因:ChIP-seq揭示组蛋白修饰H3K27me3调控高温下棉花的雄性不育机制|Plant Com
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。气候变化导致极端天气事件更加频繁地发生,包括反常的高温(hightemperature,HT),HT胁迫对作物的生长发育和产量有严重的负面影响,如平均生长温度每升高1°C,水稻产量就会下降10%,这一下降主要是由于对生殖发育的影响。棉花(Gos......
  • FreeRTOS 原理 --- 任务调度机制
    任务的状态运行态就绪态阻塞态(被动让出CPU)挂起态(主动让出CPU)就绪链表就绪态,每个任务优先级对应一个链表,如下:PRIVILEGED_DATAstaticList_tpxReadyTasksLists[configMAX_PRIORITIES]={0};/*<Prioritisedreadytasks.*/ xPortPendSVHandler中断只会从高......