thanksgiving
驱动牛犊
驱动牛犊
  • 注册日期2005-11-04
  • 最后登录2009-07-28
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1695回复:6

请看下这段代码,反内核调试的

楼主#
更多 发布于:2007-08-24 01:56
        pushad
loc2:
        in al,64h
        mov bl,al
        test bl,01
        jz loc1
        in al,60h
loc1:
        test bl,02
        jnz loc2
        mov al, 0FEh
        out 64h,al
        popad

我机器上装了QQ三国,如果不启动syser,则可以顺利玩游戏,启动了syser后,再启动QQ三国就会蓝屏,我跟踪他的驱动发现执行了out 64h,al这里才蓝屏的。
能说说他的反内核调试原理吗

最新喜欢:

精灵dsp精灵dsp
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于:2007-08-24 08:49
这段代码会检测键盘,60h, 64h都是和键盘有关的端口,参考一下下面的网页:
http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/Chapter_20/CH20-2.html#MARKER-9-36
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
zhouzhen
驱动牛犊
驱动牛犊
  • 注册日期2005-11-14
  • 最后登录2008-05-20
  • 粉丝0
  • 关注0
  • 积分124分
  • 威望14点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-24 09:37
out 64h, 0FE  这句就是复位计算机
thanksgiving
驱动牛犊
驱动牛犊
  • 注册日期2005-11-04
  • 最后登录2009-07-28
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-25 12:58
64h是和键盘有关的端口,为什么写入0FE就会复位计算机呢
thanksgiving
驱动牛犊
驱动牛犊
  • 注册日期2005-11-04
  • 最后登录2009-07-28
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-25 14:45
sub_11132 proc near

var_6= dword ptr -6

push    ebp
mov    ebp, esp
push    ecx
push    ecx
push    esi
push    edi
xor    eax, eax
lea    edi, [ebp+var_6]
stosd
sidt    qword ptr [ebp-8]
movzx    eax, word ptr [ebp+var_6+2]
movzx    ecx, word ptr [ebp+var_6]
shl    eax, 10h
or    eax, ecx
movzx    esi, word ptr [eax+0Eh]
movzx    edi, word ptr [eax+1Eh]
movzx    ecx, word ptr [eax+8]
movzx    eax, word ptr [eax+18h]
shl    esi, 10h
shl    edi, 10h
or    esi, ecx
or    edi, eax

loc_1116A:
mov    eax, dword_13288    ;ntkrnlpa
cmp    esi, eax
jb    short loc_11187
mov    ecx, dword_1328C    ;001F6100
add    ecx, eax
cmp    esi, ecx
ja    short loc_11187
cmp    edi, eax
jb    short loc_11187
cmp    edi, ecx
jbe    short loc_1118E

loc_11187:
call    sub_110EC        ;shut up the computer
jmp    short loc_1116A

loc_1118E:
pop    edi
pop    esi
leave
retn
sub_11132 endp

上面这段代码是来检测内核调试器的,out 64h, 0FE  就在sub_110EC里面
谁能帮我分析下这段代码的逻辑,谢谢

之前没搞过R0下的开发,我猜测下是不是这样,请高手指正:
内核调试器启动后就把中断向量表该了,中断发生后都被内核调试器截获了,内核调试器处理完后再调用(或者不调用)默认的中断处理例程。所以QQ三国的驱动就根据中断向量表是否被修改来确定内核调试器的存在
thanksgiving
驱动牛犊
驱动牛犊
  • 注册日期2005-11-04
  • 最后登录2009-07-28
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-08-25 15:49
我把上面几个跳转改了后就能内核调试了
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-08-27 20:02
看来他的反调试做的真的很失败。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部