MCPcopy Create free account
hub / github.com/Norbyte/ositools / Initialize

Method Initialize

OsiInterface/OsirisWrappers.cpp:58–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56}
57
58void OsirisWrappers::Initialize()
59{
60 Kernel32Module = LoadLibrary(L"kernel32.dll");
61 if (Kernel32Module == NULL) {
62 Fail("Could not load kernel32.dll");
63 }
64
65 OsirisModule = LoadLibrary(L"osiris_x64.dll");
66 if (OsirisModule == NULL) {
67 Fail("Could not load osiris_x64.dll");
68 }
69
70 MODULEINFO moduleInfo;
71 if (!GetModuleInformation(GetCurrentProcess(), OsirisModule, &moduleInfo, sizeof(moduleInfo))) {
72 Fail("Could not get module info of osiris_x64.dll");
73 }
74
75 OsirisDllStart = moduleInfo.lpBaseOfDll;
76 OsirisDllSize = moduleInfo.SizeOfImage;
77
78 OriginalRuleActionCallProc = (RuleActionCallProc)FindRuleActionCallProc();
79 if (!OriginalRuleActionCallProc) {
80 Fail("Could not locate RuleAction::Call in osiris_x64.dll");
81 }
82
83 FARPROC OsirisCtorProc = GetProcAddress(OsirisModule, "??0COsiris@@QEAA@XZ");
84 if (OsirisCtorProc == NULL) {
85 Fail("Could not locate COsiris::COsiris() in osiris_x64.dll");
86 }
87
88 FindOsirisGlobals(OsirisCtorProc);
89
90 FARPROC SetOptionProc = GetProcAddress(OsirisModule, "?SetOption@COsiris@@QEAAXI@Z");
91 if (SetOptionProc == NULL) {
92 Fail("Could not locate COsiris::SetOption in osiris_x64.dll");
93 }
94
95 FindDebugFlags(SetOptionProc);
96
97#if 0
98 Debug("OsirisWrappers::Initialize: Detouring functions");
99#endif
100
101 DetourTransactionBegin();
102 DetourUpdateThread(GetCurrentThread());
103
104 RegisterDivFunctions.Wrap(OsirisModule, "?RegisterDIVFunctions@COsiris@@QEAAXPEAUTOsirisInitFunction@@@Z");
105 InitGame.Wrap(OsirisModule, "?InitGame@COsiris@@QEAA_NXZ");
106 DeleteAllData.Wrap(OsirisModule, "?DeleteAllData@COsiris@@QEAAX_N@Z");
107 GetFunctionMappings.Wrap(OsirisModule, "?GetFunctionMappings@COsiris@@QEAAXPEAPEAUMappingInfo@@PEAI@Z");
108 OpenLogFile.Wrap(OsirisModule, "?OpenLogFile@COsiris@@QEAA_NPEB_W0@Z");
109 CloseLogFile.Wrap(OsirisModule, "?CloseLogFile@COsiris@@QEAAXXZ");
110 ReadHeader.Wrap(OsirisModule, "?_ReadHeader@COsiris@@IEAA_NAEAVCOsiSmartBuf@@AEAE111PEADAEAI@Z");
111 Load.Wrap(OsirisModule, "?Load@COsiris@@QEAA_NAEAVCOsiSmartBuf@@@Z");
112 Compile.Wrap(OsirisModule, "?Compile@COsiris@@QEAA_NPEB_W0@Z");
113 Merge.Wrap(OsirisModule, "?Merge@COsiris@@QEAA_NPEB_W@Z");
114 Event.Wrap(OsirisModule, "?Event@COsiris@@QEAA?AW4ReturnCode@osi@@IPEAVCOsiArgumentDesc@@@Z");
115 RuleActionCall.Wrap(OriginalRuleActionCallProc);

Callers

nothing calls this directly

Calls 3

DebugFunction · 0.85
FailFunction · 0.70
WrapMethod · 0.45

Tested by

no test coverage detected