首页
论坛
课程
招聘
堕落天才
雪    币: 215
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:410 )
在线值:
发帖
13
回帖
65
粉丝
1

[原创]另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)

2007-4-14 11:09 37870

[原创]另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)

2007-4-14 11:09
37870
*****************************************************************************
*标题:【原创】另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)  *
*作者:堕落天才                                                              *
*日期:2007年4月14号                                                         *
*****************************************************************************

    先废话,当初是为了绕开NP对sysenter保护而想出来的,后来发现连RootkitUnhooker都绕了.

    什么是sysenter hook我也不罗唆了,一般的拦截方法就是通过rdmsr wrmsr 两个指令把原来的sysenter地址改成自己的sysenter地址来实现的.这种方法使用方便,但检测也很容易.
    这里介绍的另外一种方法不改变sysenter地址,而是通过直接在原来sysenter地址里面写跳转代码来实现的,这实际上跟一般的函数头inline hook一样.这样rootkit检测工具就不会认为sysenter已经改变(实际上也是没变).
    一般的rootkit检测工具检测函数inline hook是通过检测长跳转指令0xE9的来判断跳转距离是不是超出函数所在的模块范围来确定的.但是实现跳转我们也可以借助寄存器或变量(用变量跳转需要涉及重定位问题,麻烦.所以一般用寄存器),这样跳转指令就不是0xE9了而是0xFF,这个绝大多数rootkit检测工具是检测不到的(包括著名的RootkitUnhooker,VICE).

    由于我们已经改变了KiFastCall函数头,所以我们只能把原来的函数头代码放到另外一个地方执行(动态分配内存,当然如果不考虑兼容性硬编码也没问题),然后再跳转回来.这里使用了"三级跳",大概是这个样子.
    sysenter->KiFastCall
             JMP -> MyKiFastCall(这里进行拦截或什么的)
                    JMP -> KiFastCall head code (这里执行原来KiFastCall函数头代码)
                           JMP -> KiFastCall + N(已经执行指令长度)
///////////////////////////////////////////////////////////////////////////////////////////////////  
//堕落天才
//2007年4月14日
#include<ntddk.h>
#include "OpCodeSize.h"

ULONG uSysenter;           //sysenter地址
UCHAR uOrigSysenterHead[8];//保存原来的八个字节函数头
PUCHAR pMovedSysenterCode; //把原来的KiFastCall函数头保存在这里
ULONG i;                   //记录服务ID
__declspec(naked) void MyKiFastCallEntry(void)
{
  __asm{
            pop  edi     //因为用到了edi来跳转 这里恢复
             mov  i, eax  //得到服务ID
  }
  __asm{  
           pushad
           push fs
             push 0x30
            pop fs
  }
  
  DbgPrint("sysenter was hooked! Get service ID:%X",i); //证明自己存在

  __asm{
             pop fs
             popad    
    jmp pMovedSysenterCode //第二跳,跳转到原来的函数头代码 
  }
  
}
//////////////////////////////////////////////////////
VOID OnUnload(IN PDRIVER_OBJECT DriverObject)
{    
  __asm{
    cli
             mov  eax,cr0
    and  eax,not 10000h
    mov  cr0,eax
  }

  memcpy((PVOID)uSysenter,uOrigSysenterHead,8);//把原来函数头的八个字节恢复

  __asm{
    mov  eax,cr0
            or   eax,10000h
    mov  cr0,eax
    sti
  }
  ExFreePool(pMovedSysenterCode); // 释放分配的内存
  DbgPrint("Unload sysenterHook");
}
////////////////////////////////////////////////////////

VOID HookSysenter()
{
  UCHAR  cHookCode[8] = { 0x57,          //push edi       第一跳,从KiFastCall跳到MyKiFastCallEntry.并绕过rootkit检测工具检测
                          0xBF,0,0,0,0,  //mov  edi,0000
                          0xFF,0xE7};    //jmp  edi

  UCHAR  JmpCode[]={0xE9,0,0,0,0};       //jmp 0000 第三跳,从KiFastCall函数头代码跳转到原来KiFastCall+N

  int    nCopyLen = 0;
  int    nPos = 0;

  __asm{
          mov ecx,0x176
            rdmsr
    mov uSysenter,eax  //得到KiFastCallEntry地址
  }
  DbgPrint("sysenter:0x%08X",uSysenter);

  nPos = uSysenter;
   while(nCopyLen<8){ //我们要改写的函数头至少需要8字节 这里计算实际需要COPY的代码长度 因为我们不能把一条完整的指令打断
    nCopyLen += GetOpCodeSize((PVOID)nPos);  //参考1
    nPos = uSysenter + nCopyLen;
  }
  
  DbgPrint("copy code lenght:%d",nCopyLen);

  pMovedSysenterCode = ExAllocatePool(NonPagedPool,20);

  memcpy(uOrigSysenterHead,(PVOID)uSysenter,8);//备份原来8字节代码

  *((ULONG*)(JmpCode+1)) = (uSysenter + nCopyLen) - ((ULONG)pMovedSysenterCode + nCopyLen)- 5;//计算跳转地址

  memcpy(pMovedSysenterCode,(PVOID)uSysenter,nCopyLen); //把原来的函数头放到新分配的内存
  memcpy((PVOID)(pMovedSysenterCode + nCopyLen),JmpCode,5); //把跳转代码COPY上去

  *((ULONG*)(cHookCode+2)) = (ULONG)MyKiFastCallEntry; //HOOK地址
  
  DbgPrint("Saved sysenter code:0x%08X",pMovedSysenterCode);
  DbgPrint("MyKiFastCallEntry:0x%08X",MyKiFastCallEntry);

  __asm{
    cli
            mov  eax,cr0
    and  eax,not 10000h
    mov  cr0,eax
  }

  memcpy((PVOID)uSysenter,cHookCode,8);//把改写原来函数头

  __asm{
    mov  eax,cr0
            or   eax,10000h
    mov  cr0,eax
    sti
  }

}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{

  DbgPrint("Welcome to sysenterhook.sys");
  DriverObject->DriverUnload = OnUnload;
  HookSysenter();
  return STATUS_SUCCESS;
}    
/////////////////////////////////////////////////////////////////////////////////////////////////// 
以上代码在 XP SP2中文 + RootkitUnhooker下测试通过 

同理 IDT hook也可以用这种方法实现,HOOK的实质是改变程序流程,无论在哪里改变
*************************************************************************************************
参考1, 海风月影,【分享】西裤哥的 Hook Api Lib 0.2 For C 

[公告]看雪论坛2020激励机制上线了!发帖不减雪币了!如何获得积分快速升级?

最新回复 (32)
gwJiang
雪    币: 55
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
1
回帖
36
粉丝
0
gwJiang 活跃值 2007-4-14 11:38
2
0
太有才了
kryso
雪    币: 12
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
11
回帖
199
粉丝
0
kryso 活跃值 2007-4-14 11:43
3
0
好文啊...
Lvg
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
6
回帖
48
粉丝
0
Lvg 活跃值 5 2007-4-14 12:03
4
0
天才强,严重学习了
bzhkl
雪    币: 400
活跃值: 活跃值 (16)
能力值: ( LV12,RANK:240 )
在线值:
发帖
47
回帖
404
粉丝
0
bzhkl 活跃值 5 2007-4-14 13:06
5
0
学习 = =
colboy
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
11
回帖
371
粉丝
0
colboy 活跃值 2007-4-14 15:07
6
0
支持!!!!!!!!!!!
colboy
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
11
回帖
371
粉丝
0
colboy 活跃值 2007-4-14 15:23
7
0
支持!!!!!!!!!!!
linsion
雪    币: 206
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
18
回帖
58
粉丝
0
linsion 活跃值 2007-4-14 15:37
8
0
怎么加入opcodesize.h死活编译不过呀?
堕落天才
雪    币: 215
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:410 )
在线值:
发帖
13
回帖
65
粉丝
1
堕落天才 活跃值 10 2007-4-14 15:44
9
0
linsion
雪    币: 206
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
18
回帖
58
粉丝
0
linsion 活跃值 2007-4-14 16:40
10
0
加入了出现这么多错误!
Compiling...
sysentryHook.c
F:\Windows Program\WINDDK\2600\inc\crt\WINBASE.H(293) : error C2061: syntax error : identifier 'CRITICAL_SECTION'
F:\Windows Program\WINDDK\2600\inc\crt\WINBASE.H(293) : error C2059: syntax error : ';'
F:\Windows Program\WINDDK\2600\inc\crt\WINBASE.H(294) : error C2061: syntax error : identifier 'PCRITICAL_SECTION'
F:\Windows Program\WINDDK\2600\inc\crt\WINBASE.H(294) : error C2059: syntax error : ';'
linsion
雪    币: 206
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
18
回帖
58
粉丝
0
linsion 活跃值 2007-4-14 16:43
11
0
不知你加入的那个头文件是怎样的?
可不可以上传一下呢?
garasmc
雪    币: 114
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
7
回帖
66
粉丝
0
garasmc 活跃值 2007-4-14 17:21
12
0
强贴!学习,谢谢天才分享
linsion
雪    币: 206
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
18
回帖
58
粉丝
0
linsion 活跃值 2007-4-15 03:52
13
0
看了驱动开发网上写的那个!

#define Naked   __declspec( naked )

ULONG MaskTable[518] =
{
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000000, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000000, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000000, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000000, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000008, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000008, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000008, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00008000, 0x00008000, 0x00000008, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00004000, 0x00004000,
  0x00000008, 0x00000008, 0x00001008, 0x00000018,
  0x00002000, 0x00006000, 0x00000100, 0x00004100,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00004100, 0x00006000, 0x00004100, 0x00004100,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00002002, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000020, 0x00000020, 0x00000020, 0x00000020,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000100, 0x00002000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00002000, 0x00002000, 0x00002000, 0x00002000,
  0x00002000, 0x00002000, 0x00002000, 0x00002000,
  0x00004100, 0x00004100, 0x00000200, 0x00000000,
  0x00004000, 0x00004000, 0x00004100, 0x00006000,
  0x00000300, 0x00000000, 0x00000200, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00000100, 0x00000100, 0x00000000, 0x00000000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00000100, 0x00000100, 0x00000100, 0x00000100,
  0x00002000, 0x00002000, 0x00002002, 0x00000100,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000008, 0x00000000, 0x00000008, 0x00000008,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0x00002000, 0x00002000, 0x00002000, 0x00002000,
  0x00002000, 0x00002000, 0x00002000, 0x00002000,
  0x00002000, 0x00002000, 0x00002000, 0x00002000,
  0x00002000, 0x00002000, 0x00002000, 0x00002000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00000000, 0x00000000, 0x00000000, 0x00004000,
  0x00004100, 0x00004000, 0xFFFFFFFF, 0xFFFFFFFF,
  0x00000000, 0x00000000, 0x00000000, 0x00004000,
  0x00004100, 0x00004000, 0xFFFFFFFF, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0xFFFFFFFF, 0xFFFFFFFF, 0x00004100, 0x00004000,
  0x00004000, 0x00004000, 0x00004000, 0x00004000,
  0x00004000, 0x00004000, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0x00000000, 0x00000000, 0x00000000, 0x00000000,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  0xFFFFFFFF, 0xFFFFFFFF
};

Naked ULONG GetOpCodeSize_ASM_CODE(PVOID Start, PVOID Tlb)
{
  __asm{
      pushad
      mov   esi, [esp+24h]
      mov   ecx, [esp+28h]
      xor   edx, edx
      xor   eax, eax
    L005:
      and   dl, 0F7h
      mov   al, [ecx]
      inc   ecx
      or     edx, [esi+eax*4h]
      test   dl, 8h
      jnz L005
      cmp   al, 0F6h
      je L035
      cmp   al, 0F7h
      je L035
      cmp   al, 0CDh
      je L040
      cmp   al, 0Fh
      je L045
    L019:
      test   dh, 80h
      jnz L052
    L021:
      test   dh, 40h
      jnz L067
    L023:
      test   dl, 20h
      jnz L057
    L025:
      test   dh, 20h
      jnz L062
    L027:
      mov   eax, ecx
      sub   eax, [esp+28h]
      and   edx, 707h
      add   al, dl
      add   al, dh
    L032:
      mov   [esp+1Ch], eax
      popad
      retn
    L035:
      or     dh, 40h
      test   byte ptr [ecx], 38h
      jnz L019
      or     dh, 80h
      jmp L019
    L040:
      or     dh, 1h
      cmp   byte ptr [ecx], 20h
      jnz L019
      or     dh, 4h
      jmp L019
    L045:
      mov   al, [ecx]
      inc   ecx
      or     edx, [esi+eax*4h+400h]
      cmp   edx, -1h
      jnz L019
      mov   eax, edx
      jmp L032
    L052:
      xor   dh, 20h
      test   al, 1h
      jnz L021
      xor   dh, 21h
      jmp L021
    L057:
      xor   dl, 2h
      test   dl, 10h
      jnz L025
      xor   dl, 6h
      jmp L025
    L062:
      xor   dh, 2h
      test   dh, 10h
      jnz L027
      xor   dh, 6h
      jmp L027
    L067:
      mov   al, [ecx]
      inc   ecx
      mov   ah, al
      and   ax, 0C007h
      cmp   ah, 0C0h
      je L023
      test   dl, 10h
      jnz L090
      cmp   al, 4h
      jnz L080
      mov   al, [ecx]
      inc   ecx
      and   al, 7h
    L080:
      cmp   ah, 40h
      je L088
      cmp   ah, 80h
      je L086
      cmp   ax, 5h
      jnz L023
    L086:
      or     dl, 4h
      jmp L023
    L088:
      or     dl, 1h
      jmp L023
    L090:
      cmp   ax, 6h
      je L096
      cmp   ah, 40h
      je L088
      cmp   ah, 80h
      jnz L023
    L096:
      or     dl, 2h
      jmp L023
      retn
    }
}

ULONG GetOpCodeSize(PVOID Start)
{
  __asm
  {
    push Start
    push offset MaskTable
    call GetOpCodeSize_ASM_CODE
    add   esp, 8     
  }
}
cvcvxk
雪    币: 2648
活跃值: 活跃值 (60)
能力值: ( LV12,RANK:750 )
在线值:
发帖
126
回帖
3102
粉丝
36
cvcvxk 活跃值 10 2007-4-15 08:34
14
0
嘿嘿,其实就是inline hook~~晕死~
仙剑太郎
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
9
回帖
242
粉丝
0
仙剑太郎 活跃值 2 2007-4-16 13:12
15
0
膜拜一下
云重
雪    币: 206
活跃值: 活跃值 (20)
能力值: ( LV4,RANK:50 )
在线值:
发帖
3
回帖
258
粉丝
0
云重 活跃值 1 2007-4-16 20:13
16
0
NP公司IQ太低真遗憾,一直没什么大动作
海风月影
雪    币: 750
能力值: (RANK:700 )
在线值:
发帖
86
回帖
2289
粉丝
8
海风月影 活跃值 17 2007-4-16 20:55
17
0
GetOpCodeSize实在太好用了呵呵

BTW: linsion贴的是xikug后写的汇编版
aki
雪    币: 195
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
18
回帖
592
粉丝
0
aki 活跃值 2 2007-4-17 00:21
18
0
xikug后写的汇编版是从aspr里偷的
cppdev
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
1
回帖
7
粉丝
0
cppdev 活跃值 2007-4-18 09:21
19
0
支持!!!!!!!!!!!
GoogleDX
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
0
回帖
101
粉丝
0
GoogleDX 活跃值 2007-4-21 12:03
20
0
其实绝大多数时候iq不是太重要的,重要的是做事情的态度。
与bc兄共勉。
berglob
雪    币: 216
活跃值: 活跃值 (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
5
回帖
45
粉丝
0
berglob 活跃值 3 2007-4-21 16:23
21
0
我是雷锋
雪    币: 208
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
2
回帖
87
粉丝
0
我是雷锋 活跃值 2007-4-22 00:23
22
0
虚拟机 winXP sp1 卡死 键盘鼠标操作不能.
点点
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
1
回帖
24
粉丝
0
点点 活跃值 2007-4-24 17:16
23
0
学习,并且建议在driver中尽可能不要使用C运行时库,呵呵,在楼主面前班门弄斧,楼主不要见笑
fdltc
雪    币: 239
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
2
回帖
13
粉丝
0
fdltc 活跃值 2007-5-4 16:13
24
0
好像没什么用,检测Hook可以加载Ntdll.dll的映像,然后直接进行比较,何必这么麻烦。
魔兽的反外挂就是这么做的
鸡蛋壳
雪    币: 206
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
456
回帖
3147
粉丝
1
鸡蛋壳 活跃值 2007-5-4 18:12
25
0
从杀毒HOOK接管
kagayaki
雪    币: 308
活跃值: 活跃值 (31)
能力值: ( LV3,RANK:20 )
在线值:
发帖
164
回帖
1081
粉丝
0
kagayaki 活跃值 2007-5-26 02:41
26
0
支持!!!!!!!!!!!
haoshuaioo
雪    币: 247
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
17
回帖
92
粉丝
0
haoshuaioo 活跃值 1 2007-5-27 01:31
27
0
强帖  支持一下
falchion
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
6
回帖
21
粉丝
0
falchion 活跃值 2007-8-17 22:16
28
0
不好意思,请问后面的驱动代码是在什么软件里面写的.
我是菜鸟,不太懂!
望指教!
eastboy
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
1
回帖
21
粉丝
0
eastboy 活跃值 2007-9-14 15:23
29
0
好 好 看 看
城市游侠
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
1
回帖
14
粉丝
0
城市游侠 活跃值 2007-9-14 18:03
30
0
强烈学习!!!
ertyui
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
1
回帖
61
粉丝
0
ertyui 活跃值 2007-9-14 20:28
31
0
学习了,希望游泳
舒默哦
雪    币: 247
能力值: ( LV1,RANK:0 )
在线值:
发帖
0
回帖
6
粉丝
0
舒默哦 活跃值 2020-3-2 17:50
32
0
最后于 2020-3-13 12:32 被舒默哦编辑 ,原因:
killpy
雪    币: 40
活跃值: 活跃值 (21)
能力值: ( LV8,RANK:130 )
在线值:
发帖
32
回帖
597
粉丝
6
killpy 活跃值 2 2020-3-3 14:34
33
0
已阅
游客
登录 | 注册 方可回帖
返回