NtGlobalFlag

简单的 NtGlobalFlag 反调试程序:

#include "stdafx.h"
#include <windows.h>

#define NAKED __declspec(naked)

NAKED BOOL Detect32()
{
    __asm
    {
        push ebp;
        mov ebp, esp;
        pushad;

        mov eax, fs:[30h];
        mov al, [eax + 68h];
        and al, 70h;
        cmp al, 70h;
        je being_debugged;
        popad;
        mov eax, 0;
        jmp being_debugged + 6

        being_debugged:
        popad;
        mov eax, 1;
        leave;
        retn;

    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    if (Detect32())
    {
        printf("Debug detected!\r\n");
        getchar();
        return 0;
    }

    printf("Hello, World!\r\n");
    getchar();


    return 0;
}

在 32 位系统下,NtGlobalFlag 存在于 PEB 的 0x68 的位置。该值默认为 0,当调试器附加后,会设置以下标志。

这里写图片描述

我们通过OD调试器打开程序,也可以看到 PEB 的 0x68的位置,值为 0x70。如果把该值修改为 0,那么程序也就也可以正常调试了

这里写图片描述

已标记关键词 清除标记
相关推荐
脱壳是门艺术——脱壳既是一种心理挑战,同时也是逆向领域最为激动人心的智力游戏之一。为了甄别或解决非常难的反逆向技巧,逆向分析人员有时不得不了解操作系统的一些底层知识,聪明和耐心也是成功脱壳的关键。这个挑战既牵涉到壳的创建者,也牵涉到那些决心躲过这些保护的脱壳者。 本文主要目的是介绍壳常用的反逆向技术,同时也探讨了可以用来躲过或禁用这些保护的技术及公开可用的工具。这些信息将使研究人员特别是恶意代码分析人员在分析加壳的恶意代码时能识别出这些技术,当这些反逆向技术阻碍其成功分析时能决定下一步的动作。第二个目的,这里介绍的信息也会被那些计划在软件中添加一些保护措施用来减缓逆向分析人员分析其受保护代码的速度的研究人员用到。当然没有什么能使一个熟练的、消息灵通的、坚定的逆向分析人员止步的。 电子书目录: 脱壳的艺术 1 概述: 2 1简介 3 2 调试器检测技术 4 2.1 PEB.BeingDebugged Flag : IsDebuggerPresent() 4 2.2 PEB.NtGlobalFlag , Heap.HeapFlags, Heap.ForceFlags 4 PEB.NtGlobalFlag 4 Heap Flags 4 2.3 DebugPort: 5 CheckRemoteDebuggerPresent()/NtQueryInformationProcess() 5 2.4 Debugger Interrupts 7 2.5 Timing Checks 8 2.6 SeDebugPrivilege 8 2.7 Parent Process(检测父进程) 9 2.8 DebugObject: NtQueryObject() 9 2.9 Debugger Window 10 2.10 Debugger Process 11 2.11 Device Drivers 11 2.12 OllyDbg:Guard Pages 11 3 断点和补丁检测技术 13 3.1 Software Breakpoint Detection 13 3.2 Hardware Breakpoint Detection 13 3.3 Patching Detection via Code Checksum Calculation 14 4反分析技术 15 4.1 Encryption and Compression 15 加密壳 15 Compression 16 4.2 Garbage Code and Code Permutation 16 Garbage Code 16 Code Permutation 17 4.3 Anti-Disassembly 18 5 调试器攻击技术 20 5.1 Misdirection and Stopping Execution via Exceptions 20 5.2 Blocking Input 21 5.3 ThreadHideFromDebugger 22 5.4 Disabling Breakpoints 22 5.5 Unhandled Exception Filter 23 5.6 OllyDbg:OutputDebugString() Format String Bug 24 6. 高级及其它技术 24 6.1 Process Injection 24 6.2 Debugger Blocker 25 6.3 TLS Callbacks 25 6.4 Stolen Bytes 27 6.5 API Redirection 27 6.6 Multi-Threaded Packers 28 6.7 Virtual Machines 28 7. 工具 29 7.1 OllyDbg 29 7.2 Ollyscript 29 7.3 Olly Advanced 29 7.4 OllyDump 30 7.5 ImpRec 30 8 参考 30 书籍:Windows和处理器底层 30 链接:Windows底层 30 链接:逆向工程,软件保护,脱壳 30
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页