看流星社区

 找回密码
 注册账号
查看: 5088|回复: 12

简单对抗某个驱动的反调试

[复制链接]

该用户从未签到

发表于 2011-8-7 13:18:20 | 显示全部楼层 |阅读模式
先声明:
1.  本文纯娱乐,本人并不从事制作非法软件的活动…也请读者不要将本文的技术运用到非法领域,否则一切后果自负。
2.我是菜鸟,都是些基本内容。只是看网上很多人搞,又弄的很麻烦,反正自己前两天玩儿了一小下,索性发出来。在ring0搞反反调试似乎已经被某广告鄙视的不行了~所以说我只是娱乐,没有其他目的。我很挫~欢迎批评指正,

不同游戏的保护驱动版本不太一样,我看的是cf的版本。先用ark初步扫描一下(如果要用xuetr,要先于tp加载,因为它hook了 tessafe.sys同样hook的指令,后启动xuetr导致直接重启),我用我以前写的一个ark扫描了一下。
他的hook如下:

代码:
  1.   IAT   kdcom.dll  KdSendPacket    KdRecivePacket
  2.   Inline NtRead/WriteVirtualMemory KiAttachProcess
  3.   Call hook  NtOpenThread NtOpenProcess 中的ObReferenceObjectByPointer
  4.   此外还有3个Callback,两个系统线程
  5. 一、首先要解决内核调试的问题,有Windbg才好继续。
复制代码
代码:
.text:01001532                 call    ds:KdDisableDebugger
.text:01001538
.text:01001538 loc_1001538:                            ; CODE XREF: .text:01001530j
.text:01001538                 mov     edx, ds:KdDebuggerEnabled
.text:0100153E                 xor     ecx, ecx
.text:01001540                 xor     eax, eax
.text:01001542                 inc     ecx
.text:01001543                 inc     eax
.text:01001544                 lock cmpxchg [edx], ecx
.text:01001548                 test    al, al
.text:0100154A                 jnz     short loc_1001532
.text:0100154C                 retn
Ida里面有这么一段,这不新鲜了,直接注册一个LoadImageNotify,启动前IAT hook KdDisableDebugger 和KdDebuggerEnabled,再inline hook 掉TesSafe.sys 里面hook掉KdSendPacket    KdRecivePacket 的函数,跳转回原函数即可。

至此我们已经可以通过WinDbg调试驱动了。

二、放行OllyIce 和 CE

Tp hook 了一大堆,网上写的都是跳来跳去的绕过,但是即使绕过了也有可能过一段时间提示非法软件,原因不明。。总之这么来很费时间。

于是我在其OpenProcess 的hook函数里面找到

代码:
.text:01001EBD                 call    ds:IoGetCurrentProcess ;得到调用者的eprocess
.text:01001EC3                 mov     [ebp+pEpro], eax
.text:01001EC6                 push    [ebp+pEpro]     ; pEpro
.text:01001EC9                 call    EprocessChk  ;非常关键的比对函数
.text:01001ECE                 movzx   eax, al
.text:01001ED1                 test    eax, eax
.text:01001ED3                 jz      short loc_1001EDA
.text:01001ED5                 jmp     loc_1001FC7  ;返回1的话 直接放行

.text:01001FC7                 mov     eax, off_100A090
.text:01001FCC                 or      ecx, 0FFFFFFFFh
.text:01001FCF                 lock xadd [eax], ecx
.text:01001FD3                 popf
.text:01001FD4                 popa
.text:01001FD5                 mov     esp, ebp
.text:01001FD7                 pop     ebp
.text:01001FD8                 jmp     OringinObReferenobjByPointer 跳回去
我们看看EprocessChk这个函数的伪代码

代码:
char __stdcall EprocessChk(PEPROCESS pEpro)
{
  unsigned int v1; // ecx@2

  if ( pEpro != (PEPROCESS)dword_100AFAC )
  {
    v1 = 0;
    if ( !process_white_num )
      return 0;
    while ( pEpro != (PEPROCESS) process_white_list [v1] )
    {
      ++v1;
      if ( v1 >= process_white_num )
        return 0;
    }
  }
  return 1;
}
process_white_list 是一个全局数组 有0x20个位子,里面存放的是诸如System.exe之类的系统进程eprocess。

代码:
kd> dd tessafe+EEE0
ee1c9ee0  863b57c0 8614cb78 86124598 861109d0
ee1c9ef0  86136da0 860fc3e8 860f6da0 860af510
ee1c9f00  860afda0 85fbada0 00000000 00000000
kd> !process 863b57c0
PROCESS 863b57c0  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 06c28020  ObjectTable: e1001e10  HandleCount: 240.
    Image: System
VadRoot 863b5050 Vads 4 Clone 0 Private 3. Modified 3279. Locked 0.
这个函数在其所有hook函数里面都存在,对方程序对于系统进程的函数调用是全部放行的。
所以,我们就注册一个CreateProcessNotify 把OD和CE加到那个白名单里面~~这样就不用绕hook了。
三、对抗debug port清零
  不熟悉debug port的同学可以去看软件调试,这是eprocess中的一个结构,是调试的关键,对方不停清零将导致OD像傻子一样,我看过的对抗方法有两种
1、  改内核函数DbgkXXX 系列函数中debug port相对于eprocess的偏移值 ,这个工作量太大,受不了。
2、  V大发的 重新编译WRK改eprocess结构。。这个倒是很通用啊~
其实对方程序想清零,也要有偏移,在xp中,0xbc是一个特殊的数字,IDA里面直接ATL+I …找到了3~4处,其中一处就是tp程序初始化硬编码。
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

发表于 2011-12-14 12:23:43 | 显示全部楼层
我是来学习的 谢谢楼主

该用户从未签到

发表于 2011-12-18 20:42:52 | 显示全部楼层
我也是来学习的,非常感谢

该用户从未签到

发表于 2011-12-19 23:19:01 | 显示全部楼层
ddddddddddddddddddddddddddd

该用户从未签到

发表于 2011-12-20 23:32:53 | 显示全部楼层
看看。。。。。。。

该用户从未签到

发表于 2011-12-21 15:22:20 | 显示全部楼层
看看                 支持楼主

该用户从未签到

发表于 2011-12-22 17:40:28 | 显示全部楼层
抗某个驱动的反调试

该用户从未签到

发表于 2012-1-28 07:09:23 | 显示全部楼层
大家都来学习。。嘻嘻

该用户从未签到

发表于 2013-9-28 13:39:51 | 显示全部楼层
回答了那么多,没有加分了,郁闷。

该用户从未签到

发表于 2019-3-28 14:32:57 | 显示全部楼层
支持楼主,支持看流星社区,以后我会经常来!
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-28 20:03

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表