欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]Hide your InlineHook in Xuetr、Gmer、RKU、KD(技术解封专题)

[原创]Hide your InlineHook in Xuetr、Gmer、RKU、KD(技术解封专题)

隐藏inlinehook已经不是新鲜招数了,因为我们有隐藏更彻底的hook,木有ark能扫得到,so,这个老技术是时候解封了。
第一种老V已经说了,poolhack~吖把我正在用的方法给公布了,鄙视下 传送门:http://bbs.pediy.com/showthread.php?t=152884
第二种也是老v发布的http://bbs.pediy.com/showthread.php?t=154384
其实就是hook MmIsAddressValid(肯定会有N多人鄙视我了。)

//适用:gmer,rku,KD
BOOLEAN __stdcall NewMmIsAddressValid(
	__in PVOID VirtualAddress
	)
{
	MMISADDRESSVALID OldMmIsAddressValid;
	PEPROCESS EProcess;
	char *ProName = NULL;
	__try{
		if (KeGetCurrentIrql() != PASSIVE_LEVEL){
			__leave;
		}
		EProcess = PsGetCurrentProcess();
		ProName = PsGetProcessImageFileName(EProcess);
		if (!ProName){
			__leave;
		}
		if (strstr(ProName,"123123.exe") != 0)
		{
			KdPrint(("%s -> %08x\n",ProName,VirtualAddress));
			//
			if (VirtualAddress == 0x80511000 ||
				VirtualAddress == 0x805c8000)
			{
				return FALSE;
			}
		}
	}
	__except(EXCEPTION_EXECUTE_HANDLER){
		goto _FuncRet;
	}
_FuncRet:
	OldMmIsAddressValid = (MMISADDRESSVALID)MmIsAddressValidHookZone;
	return OldMmIsAddressValid(VirtualAddress);
}

你以为到此就完了吗?下面重点说说xuetr~~
xuetr自实现了一个MmIsxxxxxxx,难点在于怎么定位到xuetr的这个函数~~
如果你认认真真看过A盾的代码,就知道自己实现MmIsxxxxxxx会有一个特征码:
__inline ULONG CR4()
{
	// mov eax, cr4
	__asm _emit 0x0F __asm _emit 0x20 __asm _emit 0xE0
}

mov     eax, cr4  //机器码是:0F 20 E0 即可准确定位到xuetr自己实现的MmIsAddressValid函数了
lkd> dt_driver_object 82256030
	nt!_DRIVER_OBJECT
	+0x000 Type             : 4
	+0x002 Size             : 168
	+0x004 DeviceObject     : 0x82464cf0 _DEVICE_OBJECT
	+0x008 Flags            : 0x12
	+0x00c DriverStart      : 0xb2142000 
	+0x010 DriverSize       : 0x70000
	+0x014 DriverSection    : 0x81f70008 
	+0x018 DriverExtension  : 0x822560d8 _DRIVER_EXTENSION
	+0x01c DriverName       : _UNICODE_STRING "\Driver\XueTr"
	+0x024 HardwareDatabase : 0x80671b60 _UNICODE_STRING "\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM"
	+0x028 FastIoDispatch   : (null) 
	+0x02c DriverInit       : 0xb21a203e     long  +ffffffffb21a203e     <--------定位这里
	+0x030 DriverStartIo    : (null) 
	+0x034 DriverUnload     : 0xb2190e34     void  +ffffffffb2190e34
	+0x038 MajorFunction    : [28] 0xb2190f5e     long  +ffffffffb2190f5e
	//===================================================================
	lkd> u 0xb21a203e
	b21a203e 8bff            mov     edi,edi
	b21a2040 55              push    ebp
	b21a2041 8bec            mov     ebp,esp
	b21a2043 e8bdffffff      call    b21a2005
	b21a2048 5d              pop     ebp
	b21a2049 e9f8f9feff      jmp     b2191a46     <--------定位这里
	b21a204e cc              int     3
	b21a204f cc              int     3
	//=================================================
	lkd> u b2191a46 l 100
	b2191a46 8bff            mov     edi,edi
	b2191a48 55              push    ebp
	b2191a49 8bec            mov     ebp,esp
	b2191a4b 83ec20          sub     esp,20h
	b2191a4e 53              push    ebx
	b2191a4f 56              push    esi
	b2191a50 57              push    edi
	b2191a51 50              push    eax
	b2191a52 8b4504          mov     eax,dword ptr [ebp+4]
	b2191a55 8945f4          mov     dword ptr [ebp-0Ch],eax
	b2191a58 58              pop     eax
	b2191a59 8b750c          mov     esi,dword ptr [ebp+0Ch]
	b2191a5c 8b4604          mov     eax,dword ptr [esi+4]
	b2191a5f c745fc010000c0  mov     dword ptr [ebp-4],0C0000001h
	b2191a66 85c0            test    eax,eax
	b2191a68 0f8406020000    je      b2191c74
	b2191a6e 50              push    eax
	b2191a6f ff15285019b2    call    dword ptr ds:[0B2195028h]
	b2191a75 3c01            cmp     al,1
	b2191a77 0f85f7010000    jne     b2191c74
	b2191a7d 0fb73e          movzx   edi,word ptr [esi]
	b2191a80 33c0            xor     eax,eax
	b2191a82 663bc7          cmp     ax,di
	b2191a85 0f84e9010000    je      b2191c74
	b2191a8b e860ffffff      call    b21919f0
	b2191a90 3c01            cmp     al,1
	b2191a92 0f85dc010000    jne     b2191c74
	b2191a98 6a02            push    2
	b2191a9a 5b              pop     ebx
	b2191a9b 0fb7c7          movzx   eax,di
	b2191a9e 03c3            add     eax,ebx
	b2191aa0 50              push    eax
	b2191aa1 6a01            push    1
	b2191aa3 ff15fc5019b2    call    dword ptr ds:[0B21950FCh]
	b2191aa9 8bf8            mov     edi,eax
	b2191aab 897df0          mov     dword ptr [ebp-10h],edi
	b2191aae 85ff            test    edi,edi
	b2191ab0 0f84be010000    je      b2191c74
	b2191ab6 0fb706          movzx   eax,word ptr [esi]
	b2191ab9 03c3            add     eax,ebx
	b2191abb 50              push    eax
	b2191abc 6a00            push    0
	b2191abe 57              push    edi
	b2191abf e8822e0000      call    b2194946
	b2191ac4 0fb706          movzx   eax,word ptr [esi]
	b2191ac7 50              push    eax
	b2191ac8 ff7604          push    dword ptr [esi+4]
	b2191acb 57              push    edi
	b2191acc e8692e0000      call    b219493a
	b2191ad1 6a5c            push    5Ch
	b2191ad3 57              push    edi
	b2191ad4 ff15f45019b2    call    dword ptr ds:[0B21950F4h]
	b2191ada 83c420          add     esp,20h
	b2191add 85c0            test    eax,eax
	b2191adf 740c            je      b2191aed
	b2191ae1 03c3            add     eax,ebx
	b2191ae3 33c9            xor     ecx,ecx
	b2191ae5 89450c          mov     dword ptr [ebp+0Ch],eax
	b2191ae8 663b08          cmp     cx,word ptr [eax]
	b2191aeb 7503            jne     b2191af0
	b2191aed 897d0c          mov     dword ptr [ebp+0Ch],edi
	b2191af0 e87309fdff      call    b2162468
	b2191af5 ff750c          push    dword ptr [ebp+0Ch]
	b2191af8 e84bfeffff      call    b2191948
	b2191afd 33c0            xor     eax,eax
	b2191aff 0fb788a24d19b2  movzx   ecx,word ptr [eax-4DE6B25Eh]
	b2191b06 668988a0151ab2  mov     word ptr [eax-4DE5EA60h],cx
	b2191b0d 03c3            add     eax,ebx
	b2191b0f 6685c9          test    cx,cx
	b2191b12 75eb            jne     b2191aff
	b2191b14 bea0151ab2      mov     esi,0B21A15A0h
	b2191b19 8bc6            mov     eax,esi
	b2191b1b 8d5002          lea     edx,[eax+2]
	b2191b1e 668b08          mov     cx,word ptr [eax]
	b2191b21 03c3            add     eax,ebx
	b2191b23 6685c9          test    cx,cx
	b2191b26 75f6            jne     b2191b1e
	b2191b28 8b3df05019b2    mov     edi,dword ptr ds:[0B21950F0h]
	b2191b2e 2bc2            sub     eax,edx
	b2191b30 d1f8            sar     eax,1
	b2191b32 b900010000      mov     ecx,100h
	b2191b37 2bc8            sub     ecx,eax
	b2191b39 51              push    ecx
	b2191b3a ff750c          push    dword ptr [ebp+0Ch]
	b2191b3d 56              push    esi
	b2191b3e ffd7            call    edi
	b2191b40 83c40c          add     esp,0Ch
	b2191b43 e8b802fdff      call    b2161e00
	b2191b48 ff75f4          push    dword ptr [ebp-0Ch]
	b2191b4b 8b5d08          mov     ebx,dword ptr [ebp+8]
	b2191b4e 53              push    ebx
	b2191b4f e8bc46fdff      call    b2166210
	b2191b54 e8b715fbff      call    b2143110        <--------定位这里
	//====================
	lkd> u b2143110 l 100
	b2143110 8bff            mov     edi,edi
	b2143112 55              push    ebp
	b2143113 8bec            mov     ebp,esp
	b2143115 83ec14          sub     esp,14h
	b2143118 53              push    ebx
	b2143119 6a03            push    3
	b214311b c645ff00        mov     byte ptr [ebp-1],0
	b214311f e8c4300200      call    b21661e8
	b2143124 8bd8            mov     ebx,eax
	b2143126 6a02            push    2
	b2143128 895dec          mov     dword ptr [ebp-14h],ebx
	b214312b e8b8300200      call    b21661e8
	b2143130 8945f8          mov     dword ptr [ebp-8],eax
	b2143133 85db            test    ebx,ebx
	b2143135 0f84b6020000    je      b21433f1
	b214313b 85c0            test    eax,eax
	b214313d 0f84ae020000    je      b21433f1
	b2143143 56              push    esi
	b2143144 57              push    edi
	b2143145 8b7b14          mov     edi,dword ptr [ebx+14h]
	b2143148 8b37            mov     esi,dword ptr [edi]
	b214314a 685c005300      push    53005Ch
	b214314f 6a04            push    4
	b2143151 897df0          mov     dword ptr [ebp-10h],edi
	b2143154 e875300200      call    b21661ce
	b2143159 6879007300      push    730079h
	b214315e 6a05            push    5
	b2143160 e869300200      call    b21661ce
	b2143165 6874006500      push    650074h
	b214316a 6a06            push    6
	b214316c e85d300200      call    b21661ce
	b2143171 686d005200      push    52006Dh
	b2143176 6a07            push    7
	b2143178 e851300200      call    b21661ce
	b214317d 686f006f00      push    6F006Fh
	b2143182 6a08            push    8
	b2143184 e845300200      call    b21661ce
	b2143189 6874005c00      push    5C0074h
	b214318e 6a09            push    9
	b2143190 e839300200      call    b21661ce
	b2143195 6873007900      push    790073h
	b214319a 6a0a            push    0Ah
	b214319c e82d300200      call    b21661ce
	b21431a1 6873007400      push    740073h
	b21431a6 6a0b            push    0Bh
	b21431a8 e821300200      call    b21661ce
	b21431ad 6865006d00      push    6D0065h
	b21431b2 6a0c            push    0Ch
	b21431b4 e815300200      call    b21661ce
	b21431b9 6833003200      push    320033h
	b21431be 6a0d            push    0Dh
	b21431c0 e809300200      call    b21661ce
	b21431c5 3bfe            cmp     edi,esi
	b21431c7 0f841f010000    je      b21432ec
	b21431cd 8b4e18          mov     ecx,dword ptr [esi+18h]
	b21431d0 8b150c5119b2    mov     edx,dword ptr ds:[0B219510Ch]
	b21431d6 8b4620          mov     eax,dword ptr [esi+20h]
	b21431d9 8b12            mov     edx,dword ptr [edx]
	b21431db 03c1            add     eax,ecx
	b21431dd 894df4          mov     dword ptr [ebp-0Ch],ecx
	b21431e0 3bca            cmp     ecx,edx
	b21431e2 0f86ed000000    jbe     b21432d5
	b21431e8 3bc2            cmp     eax,edx
	b21431ea 0f86e5000000    jbe     b21432d5
	b21431f0 394df8          cmp     dword ptr [ebp-8],ecx
	b21431f3 0f86dc000000    jbe     b21432d5
	b21431f9 3945f8          cmp     dword ptr [ebp-8],eax
	b21431fc 0f83d3000000    jae     b21432d5
	b2143202 8b15145119b2    mov     edx,dword ptr ds:[0B2195114h]
	b2143208 3bd1            cmp     edx,ecx
	b214320a 0f86c5000000    jbe     b21432d5
	b2143210 3bd0            cmp     edx,eax
	b2143212 0f83bd000000    jae     b21432d5
	b2143218 81f900000090    cmp     ecx,90000000h
	b214321e 0f83b1000000    jae     b21432d5
	b2143224 66837e2404      cmp     word ptr [esi+24h],4
	b2143229 0f86a6000000    jbe     b21432d5
	b214322f 8b4628          mov     eax,dword ptr [esi+28h]
	b2143232 85c0            test    eax,eax
	b2143234 0f849b000000    je      b21432d5
	b214323a 6a01            push    1
	b214323c 50              push    eax
	b214323d e872ab0300      call    b217ddb4            <--------定位这里就是xuetr自己的MmIsAddressValid

然后没区别了:
//bypass xuetr
BOOLEAN __stdcall NewXuetrMmIsAddressValid(
	__in PVOID VirtualAddress,
	__in int Type
	)
{
	XUETRMMISADDRESSVALID OldXuetrMmIsAddressValid;
	KdPrint(("%08x\n",VirtualAddress));
	if (VirtualAddress == 0x804fe000)
	{
		return FALSE;
	}
	OldXuetrMmIsAddressValid = (XUETRMMISADDRESSVALID)XuetrMmIsAddressValidHookZone;
	return OldXuetrMmIsAddressValid(VirtualAddress,Type);
}

最后广告PS:反游戏保护论坛,专注各种游戏保护的反向研究~:
http://www.antigameprotect.com/

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功