相关推荐
-
逆向学习笔记(4)——动态反调试技术
1.SEH异常处理 windows中存在许多的异常处理类型,如下: EXCEPTION_DATATYPE_MISALIGNMENT (0x80000002) EXCEPTION_BREAKPOINT (0x80000003) 断点异常 EXCEPTION_SINGLE_STEP (0x80000004) 单步执行 EXCEPTION_ACCESS_VIOLATION (0x8000000
-
Windows软件调试学习笔记(七)—— 单步步入&单步步过
软件调试学习笔记(七)—— 单步步入&单步步过单步步入设置单步异常处理单步异常实验1:单步异常的设置与处理单步步过实现思路实验2:实现单步步过 单步步入 描述: 单步步入的实现依赖于单步异常。 当我们需要观察每一行代码(包括函数内部的代码)执行之后寄存器与内存的变化,通常会采用单步步入。 当使用单步步入时,可采用在下一行代码的首字节设置INT 3断点的方式实现。 CPU为我们提供了一种更为方便的方法,即使用陷阱标志位(TF位)。 设置单步异常 TF位:置1 处理单步异常 单步产生的异常与硬件断
-
反调试学习
1. INT 2D INT 2D 原为内核模式中用来触发断点异常的指令,也可以再用户模式下触发异常。但程序调试时不会触发异常,只是忽略。在调试模式中执行完INT 2D后,下条指令的第一个字节将被忽略,后一个字节会被识别为新的指令继续执行。INT 2D的另一个特征是,使用F7 F8命令跟踪INT 2D时,程序不会停在下条指令开始的地方,而是一直运行,知道遇到断点,就像使用F9命令运行程序一样,原因
-
Windows用户态调试器原理
Windows用户态调试器原理 Windows操作系统提供了一组API来支持调试器。 这些API可以分为三类: 创建调试目标的API; 在调试循环中处理调试事件的API。 查看和修改调试目标的API。 接下来将会分别对这三种API进行介绍。 创建调试目标 在调试器工作之前,需要创建调试目标。用户态调试器有两种创建调试目标的方法:一是创建新进程,二是附加到一个运行的进程。采用这两种方...
-
C语言实现基于单步调试器
主进程通过创建远程进程来进行调试设置 eFlag 寄存器中的 tf 标志位,使程序执行一条指令后,产生单步执行异常。在异常处理过程中,记录程序执行时所有数据(每一步的 EIP、八个寄存器的值等)。
-
软件调试之陷阱标志
陷阱标志 IA-32处理器支持的调试陷阱标志共有3种。 1. 8086支持的单步执行标志(EFLAGS的TF位)。 2. 386引入的任务状态陷阱标志(TSS的T标志)。 3. 奔腾Pro引入的分支到分支单步执行标志(DebugCtl寄存器种的BTF标志)。 1.单步执行标志 标志寄存器(FLAGS)的TF(Trap Flag)位。当TF为1时,CPU每执行完一条指令便会产生一个调试异常(#DB),中断到调试异常处理程序,调试器的单步执行功能大多是依靠这一机制来实现的。 调试异常的向量号是1,
-
windows核心编程---异常处理程序与软件异常
CPU抛出的异常是硬件异常,操作系统和应用程序抛出的异常是软件异常。硬件或软件异常被抛出时,可用:__try { } __except(exception filter// 异常过滤程序) { // 异常处理程序 }一个__try后,只需跟一个__except或__finally(终止处理程序)。-异常过滤程序,异常处理程序 异常过滤程序,异常处理程序 主要有系统实现。只在__try块中发生异常
-
优秀代码片段展示
1. bool b = xx === xxx 这种写法 ```cpp // 源代码 bool handled = DebugEvent.dwDebugEventCode == EXCEPTION_DEBUG_EVENT && (DebugEvent.u.Exception.ExceptionRecord.ExceptionCode == EXCEPTION_BREAKPOINT || DebugEvent.u.Exception.ExceptionRecord.
-
SEH异常处理机制
1.SEH是windows操作系统提供的异常处理机制。 2.在程序中可以使用__try、__except、__finally关键来实现异常处理。 3.SEH属于系统级的异常处理,是不同于C++中try、catch的。SEH诞生的更早一些。 4.异常处理过程: 正常情况:程序执行->抛出异常->程序SEH处理函数->系统默认SEH处理函数。 调试情况:程序执行->抛出异常->调试器中断处理->程序SEH异常处理->系统默认异常处理 如果程序没有异常处理函数
-
通过硬件断点对抗hook检测
前言 我们知道常见的注入方式有IAT hook、SSDT hook、Inline hook等,但其实大体上可以分为两类,一类是基于修改函数地址的hook,一类则是基于修改函数代码的hook。而基于修改函数地址的hook最大的局限性就是只能hook已导出的函数,对于一些未导出函数是无能为力的,所以在真实的hook中,Inline hook反而是更受到青睐的一方。 hook测试 这里我用win32写了一个MessageBox的程序,当点击开始按钮就会弹窗,这里我写了一个Hook_E9函数用来限制对Message
-
EXCEPTION_RECORD structure
Describes an exception.描述异常的结构体 Syntax C++ typedef struct _EXCEPTION_RECORD { DWORD ExceptionCode; DWORD ExceptionFlags; struct _EXCEPT
-
调试器相关笔记
调试器的工作流程 1 调试器进程和目标进程 1.1 调试器进程和目标进程是两个独立的进程.两个进程拥有独立的内存地址. 1.2 一般情况下,调试进程和目标进程的关系有两种,主要区别在于目标进程和调试进程谁先运行: 1.2.1 目标进程由调试器进程创建(调试进程已经运行,目标进程尚未运行,调试器进程通过CreateProcess()创建目标进程.) 1.2.2 调试器进程附加到目标进
-
深入解析结构化异常处理(SEH)
A Crash Course on the Depths of Win32 Structured Exception Handling 深入解析结构化异常处理(SEH) 原文:http://www.microsoft.com/msj/0197/exception/exception.aspx Matt Pietrek 著 董岩 译 在Win32操作系统提供的所有功能中,使用最广泛...
-
调试篇-windows debug api
先创建一个被调试的pe程序,代码如下: // test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include using namespace std; void print(){ cout"hello\n"; } int _tmain(int arg
-
从操作系统(Windows)的角度讨论中断和异常机制
本章的内容是针对Windows XP的32位版本的,但是绝大多数内容也适用于Windows的其他32位版本(Windows NT、Windows 2000和Windows Vista),并且可以比较容易地推广到64位版本的Windows系统。 11.1 中断描述符表 在保护模式下,当有中断或异常发生时,CPU是通过中断描述符表(Interrupt Descriptor Table,IDT)来寻找处理函数的。因此,可以说IDT是CPU(硬件)与操作系统(软件)交接中断和异常的关口(gate)。操作系统在启
-
显示Exception Record
0:000:x86> .exr -1 ExceptionAddress: 00000000013c354e (MyTest!foo+0x000000000000001e) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 P...
-
[Win32]一个调试器的实现(三)异常
这回接着处理上一篇文章留下的问题:如何处理EXCEPTION_DEBUG_EVENT这类调试事件。这类调试事件是调试器与被调试进程进行交互的最主要手段,在后面的文章中你会看到调试器如何使用它完成断点、单步执行等操作。所以,关于这类调试事件的处理很自由,调试器的作者可以根据需要进行不同的处理。但是,在对其进行处理之前必须要了解一些关于异常的知识,这也是本文的重点。(本文的内容参考了《软件调试》一书)
-
21.windbg-.lastevent、!analyze(dump分析、异常错误码查询)
以下不经说明都以calc强制附加windbg1.lastevent.lastevent 命令显示最近一次发生的异常或事件。 1.lastevent .lastevent 命令显示最近一次发生的异常或事件。 0:000> .lastevent Last event: 1534.f4c: Break instruction exception - code 80000003 (first ch
5 楼 天一 2009-11-30 12:27
4 楼 enhydra 2009-11-30 09:21
也越来越喜欢它了
不过希望它的硬件驱动会越来越完善
3 楼 turionboy 2009-11-29 15:01
2 楼 wushexu 2009-11-29 10:30
1 楼 hqs7636 2009-11-27 19:45
这一点很厉害