反调试(设置主线程为隐藏调试破坏调试通道调试器的检测)
调试本质就是下一个int3(异常),有了异常,调试器会接收到异常,就会给处理的机会,处理前先找调试器,处理完再找调试器,找两次调试器。利用驱动层的函数能够把线程设置调试下隐藏,本意是进程不调试,但带来的后果是当这个线程本身是附加了调试器的,本来一个int3的断点,产生的是异常,会产生异常到了这,调试器又不处理
因为是个未公开函数,就要先加载导出表
void GameProtect::AntiDebug()
{
auto hNtdll = LoadLibrary(L"ntdll.dll");
if (hNtdll)
{
ZwSetInfomationThreadPtr ZwSetInfomationThread;
ZwSetInfomationThread = (ZwSetInfomationThreadPtr)GetProcAddress(hNtdll, "ZwSetInformationThread");
ZwSetInfomationThread((DWORD)GetCurrentThread(), 0x11, 0x0, 0x0);
}
}
测试:下一个int3断点直接GG
因为下一个int3断点本质上会产生一个异常 ,异常找调试器发现调试器不响应,回程序里处理,程序处理不了,再找调试器,调试器不理它就崩溃了
使用这几个函数要猥琐,不然逆向分析的时候一看字符串表直接GG,最好是直接用登录器把地址传进去
调试器的检测:
通过BeingDebugged检测:
//检测PEB结构BOOL debug = IsDebuggerPresent();BOOL _debug;CheckRemoteDebuggerPresent(GetCurrentProcess(), &_debug);if (debug)AfxMessageBox(L"IsDebuggerPresent 检测到调试器");if (_debug)AfxMessageBox(L"CheckRemoteDebuggerPresent 检测到调试器");
编译运行 用x32DBG 附加:
就检测到了.
一般的调试器 比如OD 会把这个地方处理掉 它有插件能把这个地方修复了,本质上就是将beingdebug字段处理了
一般BeingDebugged的检测用处不大 汇编代码直接改0 或者HOOK这个函数也可以过掉
OD的插件:
通过内核属性检测调试器:
原则上来讲 应用层 访问内核态是拿不到的,不过微软还是留了个口子。
利用NtQueryInformationProcess获取信息:
NTSTATUS(NTAPI* NtQueryInformationProcess)(HANDLE ProcessHandle,//进程句柄DWORD ProcessInformationClass,//信息类型PVOID ProcessInformation,//信息指针ULONG ProcessInformationLength,//信息指针大小PULONG ReturnLength //写入缓冲区大小)
PROCESSINFOCLASS 0x7 DebugPort
PROCESSINFOCLASS 0x1E DebugObjectHandle
PROCESSINFOCLASS 0x1F DebugFlags
第三个参数是一个枚举类型 但用DWORD也没错
BOOL GameProtect::CheckDebugByNT()
{//DWORD debug_port = 0;NtQueryInfomationProcess(HProcess, 0x07, &debug_port, sizeof(debug_port), 0x0);if (debug_port)return TRUE;HANDLE debug_object = 0;//检测DBGOBJECTNtQueryInfomationProcess(HProcess, 0x1E, &debug_object, sizeof(debug_object), 0x0);if (debug_object)return TRUE;BOOL debug_flags = 1;NtQueryInfomationProcess(HProcess, 0x1F, &debug_flags, sizeof(debug_flags), 0x0);if (!debug_flags)return TRUE;return FALSE;
}
反调试(设置主线程为隐藏调试破坏调试通道调试器的检测)相关推荐
- 交换机putty怎么调试_弱电工程视频监控系统设计、安装、调试、维护全过程讲解...
智能化弱电工程视频监控系统是我们每个人都熟知的系统,但是对于一些刚加入的小伙伴来说,可能还有许多陌生的地方,今天简单的总结一下,视频监控系统方面的知识点. 关于视频监控系统的方面的知识,今天重点讲解四 ...
- 主线程调用过环境检查以及防止游戏崩溃
先给大家说两种情况,也许这些情况都是你遇见过的. 案例一,逆向软件,调试游戏找到了某个CALL,我们编写DLL,把这个call写入到DLL中,然后把DLL注入到软件内部,对这个CALL进行调用,发生游 ...
- c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划
作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...
- Appium_调试腾讯订制开发的X5版本webview_调试微信_调试手机QQ空间等
= 调试才是开发效率的核心. 感觉现在的工具真心还是难用,虽然是可以用了,也只是"可以用"而以. 腾讯这一版本感觉还是进步了很多,虽然还是不够好啊. = 一.过时的文档,大家别走弯 ...
- 【Android 逆向】ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 )
文章目录 一.ptrace 函数族 1.进程附着 2.进程脱离 3.进程数据读写权限 4.进程对应的主线程寄存器读写 5.单步调试 6.继续向后执行 二.ptrace 函数族状态转换 一.ptrace ...
- 易语言反游戏检测call-游戏Call技术-(绑定主线程调用CALL技术)
我们在写call调用网络游戏进程里call时候,经常外挂辅助程序运行工作一段时间后,网络游戏就会断线或崩溃掉,但是经过检查, 发现自己调用CALL的代码又没发现写错误,这到底是怎么呢?{:100_16 ...
- 【Android 逆向】IDA 工具使用 ( 交叉引用数量设置 | 调试设置 )
文章目录 一.交叉引用数量设置 二.调试设置 一.交叉引用数量设置 选择 " 菜单栏 / Options / General - " 选项 , 弹出如下对话框 , 显示交叉引用深度 ...
- java 设置主线程_Java线程编程中的主线程讲解
当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的.主线程的重要性体现在两方面: 它是产生其他子线程的线程: 通常它必须最后完成执 ...
- DEV-C++调试设置
昨天用C/C++去考了CSP,结果用DEV-C++调试总是闪退,按照我的记忆打开了调试参数,迷迷糊糊搞了一通,还是没办法调试,难受了几个小时.所以今天痛下决心,一定要写下DEV-C++设置调试的过程, ...
最新文章
- SAP MM 巴西采购订单中的NCM Code
- python bootstrap-fileinput示例_bootstrapfileinput实现文件自动上传
- vue项目cordova打包的android应用
- python模块-paramiko
- 如何安装inf类型驱动程序 inno
- HDU 1022 Train Problem I stack 基础题
- 获取当前程序的相当路径
- VsVim - Shortcut Key (快捷键)
- 如何平衡工作与生活?真相在此
- 数据结构 三:树(Tree)
- 抖音直播间千川投放有用吗?直播间投放分析有什么技巧
- 手把手教你用 Java 实现word、excel、ppt、txt等办公文件在线预览功能!
- 面向对象软件设计原则【JAVA】(开闭原则、里氏代换、依赖倒转、接口隔离、迪米特法则、合成复用原则)
- 目标规划问题与LINGO求解
- php中控制段落的行距,CSS_CSS教程(7):网页段落行间距控制的实例,本文主要讲解如何用CSS控制网 - phpStudy...
- win10无线网卡驱动怎么安装【系统天地】
- android 连续播放动画,华为充电动画循环播放
- 白色强人粤语第11集HTML5,《白色强人第二季》
- Maleimide-PEG-Biotin,Biotin-PEG-MAL,生物素PEG马来酰亚胺用于生物分子检测
- 设计模式(Java随笔)—备忘录模式
热门文章
- 计算机毕业设计Java老年人日间照料中心管理系统(源码+mysql数据库+系统+lw文档)
- (数据结构)二叉树层次遍历
- datax-web Windows10以开发者模式部署
- BitComet 端口阻塞解决方法
- 【多目标跟踪任务——评价指标】
- 程序员熬夜保健实用大全
- 对应生成树的基本回路_远程团圆数学题库答(08秋格局)北大.doc
- 为什么程序员“找不到对象”!几张图告诉你
- MVC JsonResult的用法
- jsDeliver+github打造属于自己的图床