上面介绍了@H_404_4@USER32@H_404_4@的入口函数,在那里调用@H_404_4@Init@H_404_4@函数进行初始化,这里就来分析这个函数的代码,看看它怎么样进行初始化,如下:@H_404_4@@H_404_4@
#002 @H_404_4@Init(VOID)@H_404_4@
@H_404_4@
这里设置内核的回调函数。@H_404_4@@H_404_4@
#004 @H_404_4@/* Set up the kernel callbacks. */@H_404_4@
#005 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_WINDOWPROC] =@H_404_4@
#006 @H_404_4@(PVOID)User32CallWindowProcFromKernel;@H_404_4@
#007 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_SENDASYNCPROC] =@H_404_4@
#008 @H_404_4@(PVOID)User32CallSendAsyncProcForKernel;@H_404_4@
#009 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_LOADSYSMENUTEMPLATE] =@H_404_4@
#010 @H_404_4@(PVOID)User32LoadSysMenuTemplateForKernel;@H_404_4@
#011 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_LOADDEFAULTCURSORS] =@H_404_4@
#012 @H_404_4@(PVOID)User32SetupDefaultCursors;@H_404_4@
#013 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_HOOKPROC] =@H_404_4@
#014 @H_404_4@(PVOID)User32CallHookProcFromKernel;@H_404_4@
#015 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_EVENTPROC] =@H_404_4@
#016 @H_404_4@(PVOID)User32CallEventProcFromKernel;@H_404_4@
@H_404_4@
获取当前进程,并设置进程信息,然后返回当前进程的信息。@H_404_4@@H_404_4@
#018 @H_404_4@g_pi = GetW32ProcessInfo();@H_404_4@
@H_404_4@
共享用户进程信息给内核使用。@H_404_4@@H_404_4@
#019 @H_404_4@g_kpi = SharedPtrToKernel(g_pi);@H_404_4@
#020 @H_404_4@g_psi = SharedPtrToUser(g_pi->psi);@H_404_4@
#021 @H_404_4@gHandleTable = SharedPtrToUser(g_pi->UserHandleTable);@H_404_4@
#022 @H_404_4@gHandleEntries = SharedPtrToUser(gHandleTable->handles);@H_404_4@
@H_404_4@
分配用户线程相关的数据空间。@H_404_4@@H_404_4@
#024 @H_404_4@/* Allocate an index for user32 thread local data. */@H_404_4@
#025 @H_404_4@User32TlsIndex = TlsAlloc();@H_404_4@
#026 @H_404_4@if (User32TlsIndex != TLS_OUT_OF_INDEXES)@H_404_4@
@H_404_4@
#028 @H_404_4@if (MessageInit())@H_404_4@
@H_404_4@
初始化每个应用程序的系统菜单。@H_404_4@@H_404_4@
#030 @H_404_4@if (MenuInit())@H_404_4@
#032 @H_404_4@InitializeCriticalSection(&U32AccelCacheLock);@H_404_4@
@H_404_4@
初始化@H_404_4@GDI32@H_404_4@图形库。@H_404_4@@H_404_4@
#033 @H_404_4@GdiDllInitialize(NULL,DLL_PROCESS_ATTACH,NULL);@H_404_4@
#034 @H_404_4@InitStockObjects();@H_404_4@
@H_404_4@
加载应用程序所有要加载的动态连接库。@H_404_4@@H_404_4@
#035 @H_404_4@LoadAppInitDlls();@H_404_4@
#037 @H_404_4@return TRUE;@H_404_4@
@H_404_4@
#039 @H_404_4@MessageCleanup();@H_404_4@
@H_404_4@
#041 @H_404_4@TlsFree(User32TlsIndex);@H_404_4@
#044 @H_404_4@return FALSE;@H_404_4@
#045}@H_404_4@
原文链接:https://www.f2er.com/react/308365.html