阅读:1695回复:6
请看下这段代码,反内核调试的
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这里才蓝屏的。 能说说他的反内核调试原理吗 |
|
最新喜欢:![]() |
沙发#
发布于: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 |
|
|
板凳#
发布于:2007-08-24 09:37
out 64h, 0FE 这句就是复位计算机
|
|
地板#
发布于:2007-08-25 12:58
64h是和键盘有关的端口,为什么写入0FE就会复位计算机呢
|
|
地下室#
发布于: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三国的驱动就根据中断向量表是否被修改来确定内核调试器的存在 |
|
5楼#
发布于:2007-08-25 15:49
我把上面几个跳转改了后就能内核调试了
|
|
6楼#
发布于:2007-08-27 20:02
看来他的反调试做的真的很失败。
|
|
|