HackShield是對nt!_SEH_prolog進行Hook(Call Hook)
來繞到自己函數進行調用對象審查(非白名單就 Return False)
今天就來公布其中一種最簡單的取得nt!_SEH_prolog的方法吧
(本來不想公布的,可是發現已經有人發出來了)
我們以NtProtectVirtualMemory來作範例(Windows7 x86 環境下)
Original:
84490403 6A 38 push 38
84490405 68 485A2A84 push 842A5A48
8449040A E8 99B7E3FF call 842CBBA8 -> Original
8449040F FF75 14 push dword ptr [ebp+14]
84490412 E8 CAE9E3FF call 842CEDE1
84490417 83F8 FF cmp eax, FFFFFFFF
8449041A 75 0A jne 84490426
8449041C B8 450000C0 mov eax, 0C0000045
...
After HS Hook:
84490403 6A 38 push 38
84490405 68 485A2A84 push 842A5A48
8449040A E8 09E28702 call 86D0E618 -> After HS Hook
8449040F FF75 14 push dword ptr [ebp+14]
84490412 E8 CAE9E3FF call 842CEDE1
84490417 83F8 FF cmp eax, FFFFFFFF
8449041A 75 0A jne 84490426
8449041C B8 450000C0 mov eax, 0C0000045
...
Follow into 86D0E618:
86D0E618 E9 63BE302A jmp B101A480 -> HS Thread
86D0E61D 90 nop
86D0E61E 90 nop
86D0E61F 90 nop
86D0E620 E9 83D55BFD jmp 842CBBA8 -> Original
86D0E625 90 nop
86D0E626 90 nop
86D0E627 90 nop
...
看到了嗎?!
沒有留言:
張貼留言