C语言进程隐藏NTOpenprocess,抛砖引玉,谈谈VB下的隐藏进程检测

PAGE:0049D59E ; NTSTATUS __stdcall NtOpenProcess(PHANDLE ProcessHandle, ACCESS_MASK DesiredAccess,

POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId)

PAGE:0049D59E                 public NtOpenProcess

PAGE:0049D59E NtOpenProcess   proc near

PAGE:0049D59E

PAGE:0049D59E ProcessHandle   = dword ptr  4

PAGE:0049D59E DesiredAccess   = dword ptr  8

PAGE:0049D59E ObjectAttributes= dword ptr  0Ch

PAGE:0049D59E ClientId        = dword ptr  10h

PAGE:0049D59E

PAGE:0049D59E                 push    0C4h

PAGE:0049D5A3                 push    offset dword_413560 ; int

PAGE:0049D5A8                 call    sub_40BA92

PAGE:0049D5AD                 xor     esi, esi

PAGE:0049D5AF                 mov     [ebp-2Ch], esi

PAGE:0049D5B2                 xor     eax, eax

PAGE:0049D5B4                 lea     edi, [ebp-28h]

PAGE:0049D5B7                 stosd

PAGE:0049D5B8                 mov     eax, large fs:124h

PAGE:0049D5BE                 mov     al, [eax+140h]

PAGE:0049D5C4                 mov     [ebp-34h], al

PAGE:0049D5C7                 test    al, al

PAGE:0049D5C9                 jz      loc_4BE034

PAGE:0049D5CF                 mov     [ebp-4], esi

PAGE:0049D5D2                 mov     eax, MmUserProbeAddress

PAGE:0049D5D7                 mov     ecx, [ebp+8]

PAGE:0049D5DA                 cmp     ecx, eax

PAGE:0049D5DC                 jnb     loc_520CDE

PAGE:0049D5E2 loc_49D5E2:

PAGE:0049D5E2                 mov     eax, [ecx]

PAGE:0049D5E4                 mov     [ecx], eax

PAGE:0049D5E6                 mov     ebx, [ebp+10h]

PAGE:0049D5E9                 test    bl, 3

PAGE:0049D5EC                 jnz     loc_520CE5

PAGE:0049D5F2 loc_49D5F2:

PAGE:0049D5F2                 mov     eax, MmUserProbeAddress

PAGE:0049D5F7                 cmp     ebx, eax

PAGE:0049D5F9                 jnb     loc_520CEF

PAGE:0049D5FF loc_49D5FF:

PAGE:0049D5FF                 cmp     [ebx+8], esi

PAGE:0049D602                 setnz   byte ptr [ebp-1Ah]

PAGE:0049D606                 mov     ecx, [ebx+0Ch]

PAGE:0049D609                 mov     [ebp-38h], ecx

PAGE:0049D60C                 mov     ecx, [ebp+14h]

PAGE:0049D60F                 cmp     ecx, esi

PAGE:0049D611                 jz      loc_4CCB88

PAGE:0049D617                 test    cl, 3

PAGE:0049D61A                 jnz     loc_520CFB

PAGE:0049D620 loc_49D620:

PAGE:0049D620                 cmp     ecx, eax

PAGE:0049D622                 jnb     loc_520D0D

PAGE:0049D628 loc_49D628:

PAGE:0049D628                 mov     eax, [ecx]

PAGE:0049D62A                 mov     [ebp-2Ch], eax

PAGE:0049D62D                 mov     eax, [ecx+4]

PAGE:0049D630                 mov     [ebp-28h], eax

PAGE:0049D633                 mov     byte ptr [ebp-19h], 1

PAGE:0049D637 loc_49D637:

PAGE:0049D637                 or      dword ptr [ebp-4], 0FFFFFFFFh

PAGE:0049D63B loc_49D63B:

PAGE:0049D63B

PAGE:0049D63B                 cmp     byte ptr [ebp-1Ah], 0

PAGE:0049D63F                 jnz     loc_520D34

PAGE:0049D645 loc_49D645:

PAGE:0049D645                 mov     eax, PsProcessType

PAGE:0049D64A                 add     eax, 68h

PAGE:0049D64D                 push    eax

PAGE:0049D64E                 push    dword ptr [ebp+0Ch]

PAGE:0049D651                 lea     eax, [ebp-0D4h]

PAGE:0049D657                 push    eax

PAGE:0049D658                 lea     eax, [ebp-0B8h]

PAGE:0049D65E                 push    eax

PAGE:0049D65F                 call    SeCreateAccessState

PAGE:0049D664                 cmp     eax, esi

PAGE:0049D666                 jl      loc_49D718

PAGE:0049D66C                 push    dword ptr [ebp-34h] ; PreviousMode

PAGE:0049D66F                 push    ds:stru_5B6978.HighPart

PAGE:0049D675                 push    ds:stru_5B6978.LowPart ; PrivilegeValue

PAGE:0049D67B                 call    SeSinglePrivilegeCheck

PAGE:0049D680                 test    al, al

PAGE:0049D682                 jnz     loc_4AA7DB

PAGE:0049D688 loc_49D688:

PAGE:0049D688                 cmp     byte ptr [ebp-1Ah], 0

PAGE:0049D68C                 jnz     loc_520D52

PAGE:0049D692                 cmp     byte ptr [ebp-19h], 0

PAGE:0049D696                 jz      loc_4CCB9A

PAGE:0049D69C                 mov     [ebp-30h], esi

PAGE:0049D69F                 cmp     [ebp-28h], esi

PAGE:0049D6A2                 jnz     loc_4C1301

PAGE:0049D6A8                 lea     eax, [ebp-24h]

PAGE:0049D6AB                 push    eax

PAGE:0049D6AC                 push    dword ptr [ebp-2Ch]

PAGE:0049D6AF                 call    PsLookupProcessByProcessId

PAGE:0049D6B4 loc_49D6B4:PAGE:0049D59E ; NTSTATUS __stdcall NtOpenProcess(PHANDLE ProcessHandle, ACCESS_MASK DesiredAccess,

POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId)

PAGE:0049D59E                 public NtOpenProcess

PAGE:0049D59E NtOpenProcess   proc near

PAGE:0049D59E

PAGE:0049D59E ProcessHandle   = dword ptr  4

PAGE:0049D59E DesiredAccess   = dword ptr  8

PAGE:0049D59E ObjectAttributes= dword ptr  0Ch

PAGE:0049D59E ClientId        = dword ptr  10h

PAGE:0049D59E

PAGE:0049D59E                 push    0C4h

PAGE:0049D5A3                 push    offset dword_413560 ; int

PAGE:0049D5A8                 call    sub_40BA92

PAGE:0049D5AD                 xor     esi, esi

PAGE:0049D5AF                 mov     [ebp-2Ch], esi

PAGE:0049D5B2                 xor     eax, eax

PAGE:0049D5B4                 lea     edi, [ebp-28h]

PAGE:0049D5B7                 stosd

PAGE:0049D5B8                 mov     eax, large fs:124h

PAGE:0049D5BE                 mov     al, [eax+140h]

PAGE:0049D5C4                 mov     [ebp-34h], al

PAGE:0049D5C7                 test    al, al

PAGE:0049D5C9                 jz      loc_4BE034

PAGE:0049D5CF                 mov     [ebp-4], esi

PAGE:0049D5D2                 mov     eax, MmUserProbeAddress

PAGE:0049D5D7                 mov     ecx, [ebp+8]

PAGE:0049D5DA                 cmp     ecx, eax

PAGE:0049D5DC                 jnb     loc_520CDE

PAGE:0049D5E2 loc_49D5E2:

PAGE:0049D5E2                 mov     eax, [ecx]

PAGE:0049D5E4                 mov     [ecx], eax

PAGE:0049D5E6                 mov     ebx, [ebp+10h]

PAGE:0049D5E9                 test    bl, 3

PAGE:0049D5EC                 jnz     loc_520CE5

PAGE:0049D5F2 loc_49D5F2:

PAGE:0049D5F2                 mov     eax, MmUserProbeAddress

PAGE:0049D5F7                 cmp     ebx, eax

PAGE:0049D5F9                 jnb     loc_520CEF

PAGE:0049D5FF loc_49D5FF:

PAGE:0049D5FF                 cmp     [ebx+8], esi

PAGE:0049D602                 setnz   byte ptr [ebp-1Ah]

PAGE:0049D606                 mov     ecx, [ebx+0Ch]

PAGE:0049D609                 mov     [ebp-38h], ecx

PAGE:0049D60C                 mov     ecx, [ebp+14h]

PAGE:0049D60F                 cmp     ecx, esi

PAGE:0049D611                 jz      loc_4CCB88

PAGE:0049D617                 test    cl, 3

PAGE:0049D61A                 jnz     loc_520CFB

PAGE:0049D620 loc_49D620:

PAGE:0049D620                 cmp     ecx, eax

PAGE:0049D622                 jnb     loc_520D0D

PAGE:0049D628 loc_49D628:

PAGE:0049D628                 mov     eax, [ecx]

PAGE:0049D62A                 mov     [ebp-2Ch], eax

PAGE:0049D62D                 mov     eax, [ecx+4]

PAGE:0049D630                 mov     [ebp-28h], eax

PAGE:0049D633                 mov     byte ptr [ebp-19h], 1

PAGE:0049D637 loc_49D637:

PAGE:0049D637                 or      dword ptr [ebp-4], 0FFFFFFFFh

PAGE:0049D63B loc_49D63B:

PAGE:0049D63B

PAGE:0049D63B                 cmp     byte ptr [ebp-1Ah], 0

PAGE:0049D63F                 jnz     loc_520D34

PAGE:0049D645 loc_49D645:

PAGE:0049D645                 mov     eax, PsProcessType

PAGE:0049D64A                 add     eax, 68h

PAGE:0049D64D                 push    eax

PAGE:0049D64E                 push    dword ptr [ebp+0Ch]

PAGE:0049D651                 lea     eax, [ebp-0D4h]

PAGE:0049D657                 push    eax

PAGE:0049D658                 lea     eax, [ebp-0B8h]

PAGE:0049D65E                 push    eax

PAGE:0049D65F                 call    SeCreateAccessState

PAGE:0049D664                 cmp     eax, esi

PAGE:0049D666                 jl      loc_49D718

PAGE:0049D66C                 push    dword ptr [ebp-34h] ; PreviousMode

PAGE:0049D66F                 push    ds:stru_5B6978.HighPart

PAGE:0049D675                 push    ds:stru_5B6978.LowPart ; PrivilegeValue

PAGE:0049D67B                 call    SeSinglePrivilegeCheck

PAGE:0049D680                 test    al, al

PAGE:0049D682                 jnz     loc_4AA7DB

PAGE:0049D688 loc_49D688:

PAGE:0049D688                 cmp     byte ptr [ebp-1Ah], 0

PAGE:0049D68C                 jnz     loc_520D52

PAGE:0049D692                 cmp     byte ptr [ebp-19h], 0

PAGE:0049D696                 jz      loc_4CCB9A

PAGE:0049D69C                 mov     [ebp-30h], esi

PAGE:0049D69F                 cmp     [ebp-28h], esi

PAGE:0049D6A2                 jnz     loc_4C1301

PAGE:0049D6A8                 lea     eax, [ebp-24h]

PAGE:0049D6AB                 push    eax

PAGE:0049D6AC                 push    dword ptr [ebp-2Ch]

PAGE:0049D6AF                 call    PsLookupProcessByProcessId

PAGE:0049D6B4 loc_49D6B4:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值