这个工程我以前用来在XP上跑过DNF,DN,只为好玩目的,还没写过外挂。
声明:用这套代码干了什么坏事与我无关

BypassAntiDebug.rar
工程说明:
1.GalaxyAP  应用程序
2。HookPortBypass  重加载内核(包括nt和win32k)
3。TEST_KIDISPAT  自分发异常(朋友帮忙实现了部分,代码主要来源WRK)

ps:hookport代码抄网上的,来源http://www.m5home.com/bbs/forum.php

这套GalaxyAP工程主要实现了:
1。重加载内核(借助 hookport思路配合peloader)
2.自实现异常分发的几个主要函数
3。自创建debugobject,使用另一个object
3。也使用了另一个fastmute
4。自己发现吧。。。


PS:驱动的加载有时候在游戏前好使有时候在启动游戏后好使
PPS:这货也只能在XP上跑了

实现了HOOK框架,只需要按下面填写即可
//////////////////////////////////////////////
//这是为了HOOK原来的ntos,转到新的os中
VOID (WINAPI *DUMMYFUCK )(IN  PVOID   Object);
// VOID (WINAPI *PspUserThreadStartup )(IN  PVOID   Object);
// VOID (WINAPI *PspSystemThreadStartup )(IN  PVOID   Object);


HX_DYNC_FUNCTION dync_Old2New[]={
      DECL_DYNCFUN_HOOK_Old2New(PspUserThreadStartup),
        DECL_DYNCFUN_HOOK_Old2New(PspSystemThreadStartup),
        DECL_DYNCFUN_HOOK_Old2New(ObCloseHandle),
        DECL_DYNCFUN_HOOK_Old2New(PspProcessDelete),
        DECL_DYNCFUN_HOOK_Old2New(pIofCallDriver),
        DECL_DYNCFUN_HOOK_Old2New(KiTrap03),
        DECL_DYNCFUN_HOOK_Old2New(ObpCreateHandle),  //为了跳过ObCheckObjectAccess
/*
        kd> dps nt!pIofCallDriver l8
        8054c400  804eedc8 nt!IopfCallDriver    //就搞这个。归类到fengyue驱动去  
        8054c404  804f12c0 nt!IopfCompleteRequest
        8054c408  804f0a00 nt!IopAllocateIrpPrivate
        8054c40c  804ef0e6 nt!IopFreeIrp
        8054c410  00000000
8054c414  00000000
*/
  //  DECL_DYNCFUN_HOOK_Old2New(KeStackAttachProcess),
  //  DECL_DYNCFUN_HOOK_Old2New(KeAttachProcess),
    
    };


//这个需要另外HOOK的函数 ,old os 中的,把这些不经过hookport的转到自己的实现中
HX_DYNC_FUNCTION dync_funs_hook[]={
        DECL_DYNCFUN_HOOK(DbgkCreateThread),
        DECL_DYNCFUN_HOOK(DbgkExitThread),
        DECL_DYNCFUN_HOOK(DbgkExitProcess),
        DECL_DYNCFUN_HOOK(DbgkMapViewOfSection),
        DECL_DYNCFUN_HOOK(DbgkpMarkProcessPeb),

  //  DECL_DYNCFUN_HOOK(NtCreateDebugObject),
    DECL_DYNCFUN_HOOK(DbgkForwardException),

//    DECL_DYNCFUN_HOOK(KiDispatchException),    
    //使用强大的特征码直接patch KiDispatchException中比较debugport部分
    //s -b 804d8000 806ce100 64 A1 24 01 00 00 8B 40  44 39 B8 BC 00 00 00
    };
//这是实现自己分发函数需要用到的
HX_DYNC_FUNCTION dync_funs[]={
    DECL_DYNCFUN(KeUserExceptionDispatcher),
    DECL_DYNCFUN(KeI386XMMIPresent),
    DECL_DYNCFUN(PsImageNotifyEnabled),
    DECL_DYNCFUN(PsNtDllPathName),
    DECL_DYNCFUN(KeFeatureBits),
    DECL_DYNCFUN(PsSystemDllBase),
    DECL_DYNCFUN(PsGetNextProcess),
    DECL_DYNCFUN(PsGetNextProcessThread),