绕过所有用户层HOOK

A、分析API函数原理

   B、自写API函数

   C、SYSENTER指令

   D、硬编码_emit

   E、模拟FindWindow函数 

 

PUNICODE_STRING

MOV EAX,117A

7C92E510 >  8BD4            MOV EDX,ESP

7C92E512    0F34            SYSENTER

 

//取得RtlInitUnicodeString地址

    typedef   (__stdcall *PRtlInitUnicodeString)( PUNICODE_STRING , PCWSTR  );

    PRtlInitUnicodeString  RtlInitUnicodeString;

RtlInitUnicodeString=(PRtlInitUnicodeString)GetProcAddress(GetModuleHandle("ntdll.dll"),"RtlInitUnicodeString");

    //初始化PUNICODE_STRING字串结构 方法1

    //pname->Buffer= wName ;

    //pname->Length=wcslen(pname->Buffer)*2+1  ;

    //UnsafeModuleName.MaximumLength=0x0fff;

 

   //初始化PUNICODE_STRING字串结构 方法2

    RtlInitUnicodeString(pname,wName);

猜你喜欢

转载自blog.csdn.net/zang141588761/article/details/82972464