您的位置:首页 > 编程语言 > C语言/C++

InitSystemFunctions

2016-07-06 21:45 387 查看

InitSystemFunctions

//----- (000000018002382C) ----------------------------------------------------
signed __int64 __fastcall InitSystemFunctions(int a1)
{
int v1; // eax@5
HMODULE v2; // rax@8
CStandardSetupLogFilter *v3; // rax@9
HMODULE v4; // rax@14
CStandardSetupLogFilter *v5; // rax@16
CHAR LibFileName; // [sp+20h] [bp-128h]@13
char Dst; // [sp+21h] [bp-127h]@13

if ( !dword_18003B2C8 )
{
dword_18003B2C8 = 1;
g_DefaultACL = a1;
if ( dword_18003A4C8 )
{
dword_18003A4C8 = 0;
if ( GetVersion() < 0x80000000 )
{
dword_18003B2CC = 1;
goto LABEL_8;
}
v1 = 0;
dword_18003B2CC = 0;
}
else
{
v1 = dword_18003B2CC;
}
if ( !v1 )
{
g_CreateMutex = (CStandardSetupLogFilter *)CreateMutexWin32A;
g_CreateSharedMemory = (CStandardSetupLogFilter *)CreateSharedMemoryWin32A;
g_CreateSharedFile = (CStandardSetupLogFilter *)CreateSharedFileWin32A;
g_GetModuleFileNameA = (CStandardSetupLogFilter *)GetModuleFileNameAWin32A;
g_GetModuleFileNameW = (CStandardSetupLogFilter *)GetModuleFileNameWWin32A;
g_CreateFile = (CStandardSetupLogFilter *)CreateFileWin32A;
g_CreateFileMapping = (__int64)CreateFileMappingWin32A;
g_DeleteFile = (CStandardSetupLogFilter *)DeleteFileWin32A;
v3 = (CStandardSetupLogFilter *)CConsistentFileMapping::Compact;
goto LABEL_12;
}
LABEL_8:
g_CreateMutex = (CStandardSetupLogFilter *)CreateMutexWin32W;
g_CreateSharedMemory = (CStandardSetupLogFilter *)CreateSharedMemoryWin32W;
g_CreateSharedFile = (CStandardSetupLogFilter *)CreateSharedFileWin32W;
g_GetModuleFileNameA = (CStandardSetupLogFilter *)GetModuleFileNameAWin32A;
g_GetModuleFileNameW = (CStandardSetupLogFilter *)GetModuleFileNameWWin32W;
g_CreateFile = (CStandardSetupLogFilter *)CreateFileWin32W;
g_CreateFileMapping = (__int64)CreateFileMappingWin32W;
g_DeleteFile = (CStandardSetupLogFilter *)DeleteFileWin32W;
g_AddVectoredExceptionHandler = (CStandardSetupLogFilter *)CConsistentFileMapping::Compact;
v2 = GetModuleHandleW(L"kernel32");
if ( !v2 || (v3 = (CStandardSetupLogFilter *)GetProcAddress(v2, "AddVectoredExceptionHandler")) == 0i64 )
{
LABEL_13:
LibFileName = 0;
g_ReleaseMutex = (CStandardSetupLogFilter *)ReleaseMutexWin32;
g_WaitForSingleObject = (CStandardSetupLogFilter *)WaitForSingleObjectWin32;
g_CloseHandle = (CStandardSetupLogFilter *)CloseHandleWin32;
g_MapSharedMemory = (CStandardSetupLogFilter *)MapSharedMemoryWin32;
g_UnMapSharedMemory = (CStandardSetupLogFilter *)UnMapSharedMemoryWin32;
g_SetFilePointer = (CStandardSetupLogFilter *)SetFilePointerWin32;
g_WriteFile = (CStandardSetupLogFilter *)WriteFileWin32;
g_GetProcessorsNumber = (__int64)GetProcessorsNumberWin32;
memset_0(&Dst, 0, 0x103ui64);
if ( ExpandEnvironmentStringsA("%windir%\\system32\\dbghelp.dll", &LibFileName, 0x104u) )
{
v4 = LoadLibraryExA(&LibFileName, 0i64, 0);
if ( !v4 )
{
g_MiniDumpWriteDump = (CStandardSetupLogFilter *)CConsistentFileMapping::Compact;
FreeLibrary(0i64);
return 1i64;
}
v5 = (CStandardSetupLogFilter *)GetProcAddress(v4, "MiniDumpWriteDump");
}
else
{
v5 = (CStandardSetupLogFilter *)CConsistentFileMapping::Compact;
}
g_MiniDumpWriteDump = v5;
return 1i64;
}
LABEL_12:
g_AddVectoredExceptionHandler = v3;
goto LABEL_13;
}
return 1i64;
}
// 18003A4C8: using guessed type int dword_18003A4C8;
// 18003B2A0: using guessed type __int64 g_CreateFileMapping;
// 18003B2B0: using guessed type __int64 g_GetProcessorsNumber;
// 18003B2C8: using guessed type int dword_18003B2C8;
// 18003B2CC: using guessed type int dword_18003B2CC;
// 18003B2D0: using guessed type int g_DefaultACL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息