decompiled agent_release
This commit is contained in:
parent
baac905ef2
commit
11a3488883
6439 changed files with 229565 additions and 1 deletions
228
decomp/Agent_Release_x64/cpp/AgentProcessControl.cpp
Normal file
228
decomp/Agent_Release_x64/cpp/AgentProcessControl.cpp
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
// AgentProcessControl.cpp — hand-lifted C++ reconstruction of Agent_Release_x64.exe
|
||||
// sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
||||
//
|
||||
// Source of truth: Ghidra pseudocode in ../0x<addr>.pseudo.c and full/functions/.
|
||||
// This file is a READABLE RECONSTRUCTION, not recovered source:
|
||||
// - control flow and Win32 calls are observed in the decompiled code;
|
||||
// - all type/field/function names are inferred (no PDB) and marked so;
|
||||
// - std::wstring temporaries, stack cookies and inlined string code are elided.
|
||||
// Static analysis only; runtime behaviour has not been observed.
|
||||
|
||||
#include <windows.h>
|
||||
#include <tlhelp32.h>
|
||||
#include <process.h>
|
||||
#include <cstdio>
|
||||
#include <cwchar>
|
||||
#include <string>
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// ServerEntry: per-managed-server record held in a hash map keyed by server
|
||||
// code (global at 0x140162d60, bucket array +0x38, bucket count +0x40,
|
||||
// element count +0x58). Offsets observed; names inferred.
|
||||
// ---------------------------------------------------------------------------
|
||||
struct ServerEntry {
|
||||
/* +0x04 */ int32_t code; // hash key; sent in RMI notifications
|
||||
/* +0x0c */ uint8_t type; // compared against server-type table; ==1 triggers extra step on exit
|
||||
/* +0xa0 */ int32_t unk_a0; // zeroed when the process exits (purpose unknown)
|
||||
/* +0xa4 */ DWORD pid; // set from CreateProcessW result
|
||||
/* +0xb8..0xd7 */ // 32 bytes copied into the RMI "server state" payload
|
||||
/* +0xc4 */ int32_t running; // 1 = launched/launching, 0 = stopped
|
||||
/* +0xd0 */ int32_t unk_d0; // >0 together with type==1 triggers FUN_140009f20 on exit
|
||||
/* +0xd5 */ uint8_t revive; // relaunch on exit (inferred: XML key "revive_server")
|
||||
};
|
||||
// NOTE: layout shown as comments; real struct has unrecovered gaps.
|
||||
|
||||
// Server-type table (global at 0x140162d58): vector of 0x30-byte records
|
||||
// +0x00 uint8_t type; +0x08 std::wstring exePath (MSVC SSO, cap at +0x20)
|
||||
struct ServerTypeInfo { uint8_t type; std::wstring exePath; };
|
||||
|
||||
// Agent options singleton (global at 0x140162d68). Observed fields:
|
||||
// +0x030 std::wstring agentName (used in "FAILED SERVER ON %s")
|
||||
// +0x152 bool useCodeAsArgument (true: arg = decimal server code)
|
||||
// +0x171 bool reviveAll (global relaunch-on-exit)
|
||||
// +0x178 double autoServerOnDelay (seconds after start; <=0 disables)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 0x1400100b0 AcquireSingleInstanceMutex (observed)
|
||||
// ---------------------------------------------------------------------------
|
||||
bool AcquireSingleInstanceMutex(HANDLE* outMutex)
|
||||
{
|
||||
*outMutex = CreateMutexW(nullptr, TRUE, L"Global\\RustyHearts_Agent");
|
||||
DWORD err = GetLastError();
|
||||
if (err == ERROR_ACCESS_DENIED) wprintf(L"ERROR_ACCESS_DENIED!!! %s \n"); // format arg missing in binary
|
||||
else if (err == ERROR_ALREADY_EXISTS) wprintf(L"ERROR_ALREADY_EXISTS!!! %s \n");
|
||||
else return true;
|
||||
Sleep(3000);
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 0x140009780 KillProcessByName (observed)
|
||||
// Terminates only the FIRST process whose image name matches (case-insensitive).
|
||||
// ---------------------------------------------------------------------------
|
||||
bool KillProcessByName(const wchar_t* exeName)
|
||||
{
|
||||
if (!exeName) return false;
|
||||
HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
|
||||
PROCESSENTRY32W pe = { sizeof(pe) };
|
||||
for (BOOL ok = Process32FirstW(snap, &pe); ok; ok = Process32NextW(snap, &pe)) {
|
||||
if (_wcsicmp(exeName, pe.szExeFile) != 0) continue;
|
||||
HANDLE h = OpenProcess(PROCESS_TERMINATE, FALSE, pe.th32ProcessID);
|
||||
if (h != INVALID_HANDLE_VALUE) { // binary compares to -1, not NULL
|
||||
wprintf(L"Process Kill.!!! [%s] \n"); // format arg missing in binary
|
||||
TerminateProcess(h, 0);
|
||||
CloseHandle(h);
|
||||
return true; // note: snapshot handle leaked on this path
|
||||
}
|
||||
}
|
||||
CloseHandle(snap);
|
||||
return false;
|
||||
}
|
||||
|
||||
unsigned __stdcall ProcessWatchThread(void* arg); // below
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 0x1400094e0 LaunchProcess (observed)
|
||||
// Returns PID, or 0 on failure. Working directory = directory of the exe
|
||||
// (inferred: derived from cmdline by FUN_14002fe90).
|
||||
// ---------------------------------------------------------------------------
|
||||
DWORD LaunchProcess(const wchar_t* commandLine)
|
||||
{
|
||||
wchar_t cmd[MAX_PATH] = {};
|
||||
wchar_t workDir[MAX_PATH] = {};
|
||||
wcscpy_s(cmd, commandLine);
|
||||
/* workDir <- FUN_14002fe90(commandLine) (inferred: path-of-exe helper) */
|
||||
|
||||
STARTUPINFOW si = {};
|
||||
si.cb = sizeof(si);
|
||||
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESIZE | STARTF_USEFILLATTRIBUTE; // 0x13
|
||||
si.dwXSize = 700; si.dwYSize = 110;
|
||||
si.dwFillAttribute = 0x17; // white on blue
|
||||
si.wShowWindow = SW_SHOW;
|
||||
PROCESS_INFORMATION pi = {};
|
||||
|
||||
DWORD pid = 0;
|
||||
if (!CreateProcessW(nullptr, cmd, nullptr, nullptr, FALSE, CREATE_NEW_CONSOLE,
|
||||
nullptr, workDir, &si, &pi)) {
|
||||
Log(L"=======Server Fail=======\n");
|
||||
Log(L"Path\t: [%s] \n", workDir);
|
||||
Log(L"File\t: [%s] \n", cmd);
|
||||
} else {
|
||||
CloseHandle(pi.hThread);
|
||||
// passes a pointer to the STACK PROCESS_INFORMATION; the thread reads it
|
||||
// immediately, so this relies on the 1 s Sleep below (latent race).
|
||||
unsigned tid;
|
||||
CloseHandle((HANDLE)_beginthreadex(nullptr, 0, ProcessWatchThread, &pi, 0, &tid));
|
||||
Log(L"=======ServerOn=======\n");
|
||||
pid = pi.dwProcessId;
|
||||
}
|
||||
printf("//////////////////////////////////////////////////////////////////////////\n");
|
||||
Sleep(1000);
|
||||
return pid;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 0x140008ea0 ServerOn(request) (observed flow; names inferred)
|
||||
// request: +0x04 server code, +0x0c server type.
|
||||
// ---------------------------------------------------------------------------
|
||||
void ServerOn(void* self, const ServerRequest* req)
|
||||
{
|
||||
ServerEntry* e = g_servers.Find(req->code); // hash lookup
|
||||
if (e->running == 0) {
|
||||
e->running = 1;
|
||||
AgentManagerSession* mgr = g_agentServer->managerSession; // 0x1400626f8 +0xa8
|
||||
|
||||
std::wstring cmd = g_serverTypes.ExePath(req->type) + L" ";
|
||||
if (!g_options->useCodeAsArgument)
|
||||
cmd += Widen(BuildLaunchArgs(g_options, req)); // FUN_140027540 — contents UNKNOWN
|
||||
else
|
||||
cmd += std::to_wstring(req->code);
|
||||
|
||||
DWORD pid = 0;
|
||||
if (cmd.size() < MAX_PATH && (pid = LaunchProcess(cmd.c_str())) > 0) {
|
||||
e->pid = pid;
|
||||
e->running = 1;
|
||||
// RMI to AgentManager, vtable slot +0x40 on proxy at session+0x68:
|
||||
mgr->proxy.NotifyServerState(/*host*/1, /*rmiCtx*/g_rmiCtx, e->code, e->state, e->Serialize());
|
||||
} else {
|
||||
e->running = 0;
|
||||
}
|
||||
if (mgr && pid == 0)
|
||||
mgr->SendLog(1, Format(L"FAILED SERVER ON %s ", g_options->agentName.c_str()));
|
||||
}
|
||||
ReleaseRequest(req); // FUN_140004e10
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 0x140008c90 ProcessWatchThread (observed)
|
||||
// ---------------------------------------------------------------------------
|
||||
unsigned __stdcall ProcessWatchThread(void* arg)
|
||||
{
|
||||
auto* pi = static_cast<PROCESS_INFORMATION*>(arg);
|
||||
HANDLE hProcess = pi->hProcess;
|
||||
DWORD pid = pi->dwProcessId;
|
||||
DWORD code;
|
||||
do { Sleep(10); GetExitCodeProcess(hProcess, &code); } while (code == STILL_ACTIVE);
|
||||
// note: hProcess is never closed (handle leak per launch)
|
||||
|
||||
ServerEntry* e = g_servers.FindByPid(pid); // FUN_14002c9a0
|
||||
if (!e) { wprintf(L"NOT FIND PROCESS ID \n"); return 0; }
|
||||
|
||||
AgentManagerSession* mgr = g_agentServer->managerSession;
|
||||
if (mgr) {
|
||||
e->unk_a0 = 0;
|
||||
e->running = 0;
|
||||
mgr->proxy.NotifyServerState(1, g_rmiCtx, e->code, e->state, e->Serialize()); // slot +0x40
|
||||
mgr->proxy.NotifyServerStopped(1, g_rmiCtx, /*flag*/1, e->code, /*?*/1); // slot +0x50
|
||||
if (e->revive || g_options->reviveAll) {
|
||||
ServerOn(g_agentProcess, MakeRequest(e));
|
||||
if (e->type == 1 && e->unk_d0 > 0) FUN_140009f20(g_agentProcess, e->code);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 0x1400037a0 MagiAgentServer::Run (observed; simplified)
|
||||
// ---------------------------------------------------------------------------
|
||||
int MagiAgentServer::Run()
|
||||
{
|
||||
LogBanner(L"# Agent Startup #\n\n");
|
||||
CoInitialize(nullptr);
|
||||
Log(L"+ Prepare Startup\n");
|
||||
|
||||
network_ = new MagiAgentNetwork(); // 0xb8 bytes, FUN_140005020
|
||||
managerSession_ = new MGAgentManagerSession(network_); // 0x68 bytes
|
||||
/* if options map has entry type 0x15 (AgentManager address):
|
||||
connect and pump until connected (FUN_1400023e0 loop) */
|
||||
network_->Start(); // FUN_140005360
|
||||
LogBanner(L"\n # Agent Running... #\n");
|
||||
|
||||
timer_ = new Magi::Timer(new TimeSourceHRWin32()); // QueryPerformanceCounter
|
||||
g_options->Load(); // FUN_1400271e0
|
||||
KillProcessByName(g_serverTypes.ExePath(0x18)); // kill stale process of type 0x18 (UNKNOWN which server)
|
||||
StartConsoleThread(); // FUN_140001dc0 (inferred: keyboard menu)
|
||||
|
||||
bool autoOnPending = true;
|
||||
double lastSec = 0, lastTick = 0;
|
||||
while (running_) { // +0x60
|
||||
clock_.Update();
|
||||
double now = timer_->Now();
|
||||
if (g_options->autoServerOnDelay > 0 && now > g_options->autoServerOnDelay && autoOnPending) {
|
||||
autoOnPending = false;
|
||||
printf("Start Auto Server On. \n");
|
||||
AllServerOn(); // FUN_140009bd0
|
||||
}
|
||||
managerSession_->Update(now); // FUN_140007da0
|
||||
if (now - lastSec >= 1.0) { /* optional "[ %s ] FPS[ %d ]" print */ lastSec = now; }
|
||||
if (now - lastTick >= 0.1) { Tick(); network_->Update(now); lastTick = now; } // 10 Hz
|
||||
lastTime_ = now;
|
||||
Sleep(1);
|
||||
}
|
||||
Log(L"+ Prepare Stop\n");
|
||||
managerSession_->Stop();
|
||||
delete network_->netServer_;
|
||||
CoUninitialize();
|
||||
LogBanner(L"# Agent Stoped... #\n");
|
||||
return 0;
|
||||
}
|
||||
463
decomp/Agent_Release_x64/cpp/classes.hpp
Normal file
463
decomp/Agent_Release_x64/cpp/classes.hpp
Normal file
|
|
@ -0,0 +1,463 @@
|
|||
// Auto-generated from RTTI vftables (full/vtables.tsv), Ghidra 12.1.2.
|
||||
// Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
||||
// RECONSTRUCTION. Observed: class names (RTTI) and vftable slot -> function address.
|
||||
// Unknown (no PDB): method names, signatures, data members, base-class relationships.
|
||||
// A class with several vftables uses multiple inheritance (one vftable per base
|
||||
// subobject); which base each belongs to is not yet recovered, so slots are
|
||||
// grouped as vtN. Implementations: full/functions/<address>.c
|
||||
#pragma once
|
||||
|
||||
// MBISingleton<CConsoleControl> (template instantiation) vftable 0x14011aff8: 0x140001300
|
||||
|
||||
class CConsoleControl {
|
||||
public:
|
||||
// vt0: vftable 0x14011afe8
|
||||
virtual void vt0_0_vf_140001300(); // slot 0 -> 0x140001300
|
||||
};
|
||||
|
||||
class MagiServerBase {
|
||||
public:
|
||||
// vt0: vftable 0x14011b130
|
||||
virtual void vt0_0_vf_140001b50(); // slot 0 -> 0x140001b50
|
||||
};
|
||||
|
||||
class MagiCommonSession {
|
||||
public:
|
||||
// vt0: vftable 0x14011b518
|
||||
virtual void vt0_0_vf_1400020d0(); // slot 0 -> 0x1400020d0
|
||||
virtual void vt0_pure1() = 0; // slot 1 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure2() = 0; // slot 2 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure3() = 0; // slot 3 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure4() = 0; // slot 4 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure5() = 0; // slot 5 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_6_vf_140006b80(); // slot 6 -> 0x140006b80
|
||||
virtual void vt0_pure7() = 0; // slot 7 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure8() = 0; // slot 8 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure9() = 0; // slot 9 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure10() = 0; // slot 10 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure11() = 0; // slot 11 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_12_vf_140006b80(); // slot 12 -> 0x140006b80
|
||||
virtual void vt0_pure13() = 0; // slot 13 -> 0x14003b036 (_purecall)
|
||||
};
|
||||
|
||||
// MBISingleton<MagiAgentServer> (template instantiation) vftable 0x14011bc00: 0x140004fc0
|
||||
|
||||
class MagiAgentServer {
|
||||
public:
|
||||
// vt0: vftable 0x14011bbc0
|
||||
virtual void vt0_0_vf_140004c00(); // slot 0 -> 0x140004c00
|
||||
// vt1: vftable 0x14011bbb0
|
||||
virtual void vt1_0_vf_1400033f0(); // slot 0 -> 0x1400033f0
|
||||
};
|
||||
|
||||
class MagiAgentNetwork {
|
||||
public:
|
||||
// vt0: vftable 0x14011cb58
|
||||
virtual void vt0_0_vf_140006b70(); // slot 0 -> 0x140006b70
|
||||
virtual void vt0_1_vf_140006b60(); // slot 1 -> 0x140006b60
|
||||
virtual void vt0_2_vf_140018120(); // slot 2 -> 0x140018120
|
||||
virtual void vt0_3_vf_140006b80(); // slot 3 -> 0x140006b80
|
||||
virtual void vt0_4_vf_140006b80(); // slot 4 -> 0x140006b80
|
||||
virtual void vt0_5_vf_140006b30(); // slot 5 -> 0x140006b30
|
||||
virtual void vt0_6_vf_140006b10(); // slot 6 -> 0x140006b10
|
||||
virtual void vt0_7_vf_14000b970(); // slot 7 -> 0x14000b970
|
||||
virtual void vt0_8_vf_14000bb00(); // slot 8 -> 0x14000bb00
|
||||
virtual void vt0_9_vf_14000bd70(); // slot 9 -> 0x14000bd70
|
||||
virtual void vt0_10_vf_14000c120(); // slot 10 -> 0x14000c120
|
||||
virtual void vt0_11_vf_140006b20(); // slot 11 -> 0x140006b20
|
||||
virtual void vt0_12_vf_14000be40(); // slot 12 -> 0x14000be40
|
||||
virtual void vt0_13_vf_14000be80(); // slot 13 -> 0x14000be80
|
||||
virtual void vt0_14_vf_14000bed0(); // slot 14 -> 0x14000bed0
|
||||
virtual void vt0_15_vf_140006b20(); // slot 15 -> 0x140006b20
|
||||
virtual void vt0_16_vf_14000bf00(); // slot 16 -> 0x14000bf00
|
||||
virtual void vt0_17_vf_14000bf30(); // slot 17 -> 0x14000bf30
|
||||
virtual void vt0_18_vf_14000bf50(); // slot 18 -> 0x14000bf50
|
||||
// vt1: vftable 0x14011cab8
|
||||
virtual void vt1_0_vf_140005100(); // slot 0 -> 0x140005100
|
||||
virtual void vt1_1_vf_140005200(); // slot 1 -> 0x140005200
|
||||
virtual void vt1_2_vf_1400052a0(); // slot 2 -> 0x1400052a0
|
||||
virtual void vt1_3_vf_140006b80(); // slot 3 -> 0x140006b80
|
||||
virtual void vt1_4_vf_140005340(); // slot 4 -> 0x140005340
|
||||
virtual void vt1_5_vf_140006b80(); // slot 5 -> 0x140006b80
|
||||
virtual void vt1_6_vf_140006b80(); // slot 6 -> 0x140006b80
|
||||
virtual void vt1_7_vf_140005620(); // slot 7 -> 0x140005620
|
||||
virtual void vt1_8_vf_1400056f0(); // slot 8 -> 0x1400056f0
|
||||
virtual void vt1_9_vf_140005940(); // slot 9 -> 0x140005940
|
||||
virtual void vt1_10_vf_140006b80(); // slot 10 -> 0x140006b80
|
||||
virtual void vt1_11_vf_140006b80(); // slot 11 -> 0x140006b80
|
||||
virtual void vt1_12_vf_140006b80(); // slot 12 -> 0x140006b80
|
||||
virtual void vt1_13_vf_140006b80(); // slot 13 -> 0x140006b80
|
||||
virtual void vt1_14_vf_140006b80(); // slot 14 -> 0x140006b80
|
||||
virtual void vt1_15_vf_140006b80(); // slot 15 -> 0x140006b80
|
||||
virtual void vt1_16_vf_140006b80(); // slot 16 -> 0x140006b80
|
||||
virtual void vt1_17_vf_140006b80(); // slot 17 -> 0x140006b80
|
||||
};
|
||||
|
||||
class MGAgentManagerSession {
|
||||
public:
|
||||
// vt0: vftable 0x14011cf18
|
||||
virtual void vt0_0_vf_140008c00(); // slot 0 -> 0x140008c00
|
||||
virtual void vt0_1_vf_140008bf0(); // slot 1 -> 0x140008bf0
|
||||
virtual void vt0_2_vf_14001d960(); // slot 2 -> 0x14001d960
|
||||
virtual void vt0_3_vf_140006b80(); // slot 3 -> 0x140006b80
|
||||
virtual void vt0_4_vf_140006b80(); // slot 4 -> 0x140006b80
|
||||
virtual void vt0_5_vf_140006b30(); // slot 5 -> 0x140006b30
|
||||
virtual void vt0_6_vf_140008be0(); // slot 6 -> 0x140008be0
|
||||
virtual void vt0_7_vf_14000d780(); // slot 7 -> 0x14000d780
|
||||
virtual void vt0_8_vf_14000df90(); // slot 8 -> 0x14000df90
|
||||
virtual void vt0_9_vf_14000e410(); // slot 9 -> 0x14000e410
|
||||
virtual void vt0_10_vf_14000e1e0(); // slot 10 -> 0x14000e1e0
|
||||
virtual void vt0_11_vf_14000e460(); // slot 11 -> 0x14000e460
|
||||
virtual void vt0_12_vf_14000e080(); // slot 12 -> 0x14000e080
|
||||
virtual void vt0_13_vf_14000e0b0(); // slot 13 -> 0x14000e0b0
|
||||
virtual void vt0_14_vf_14000e480(); // slot 14 -> 0x14000e480
|
||||
virtual void vt0_15_vf_14000e4c0(); // slot 15 -> 0x14000e4c0
|
||||
virtual void vt0_16_vf_14000e4f0(); // slot 16 -> 0x14000e4f0
|
||||
virtual void vt0_17_vf_14000e520(); // slot 17 -> 0x14000e520
|
||||
virtual void vt0_18_vf_14000e550(); // slot 18 -> 0x14000e550
|
||||
virtual void vt0_19_vf_14000d140(); // slot 19 -> 0x14000d140
|
||||
virtual void vt0_20_vf_14000d1d0(); // slot 20 -> 0x14000d1d0
|
||||
virtual void vt0_21_vf_14000d320(); // slot 21 -> 0x14000d320
|
||||
virtual void vt0_22_vf_14000d260(); // slot 22 -> 0x14000d260
|
||||
virtual void vt0_23_vf_14000d3b0(); // slot 23 -> 0x14000d3b0
|
||||
// vt1: vftable 0x14011ce98
|
||||
virtual void vt1_0_vf_140007030(); // slot 0 -> 0x140007030
|
||||
virtual void vt1_1_vf_140007120(); // slot 1 -> 0x140007120
|
||||
virtual void vt1_2_vf_1400071c0(); // slot 2 -> 0x1400071c0
|
||||
virtual void vt1_3_vf_140006b80(); // slot 3 -> 0x140006b80
|
||||
virtual void vt1_4_vf_140007260(); // slot 4 -> 0x140007260
|
||||
virtual void vt1_5_vf_140006b80(); // slot 5 -> 0x140006b80
|
||||
virtual void vt1_6_vf_140006b80(); // slot 6 -> 0x140006b80
|
||||
virtual void vt1_7_vf_140007280(); // slot 7 -> 0x140007280
|
||||
virtual void vt1_8_vf_1400073a0(); // slot 8 -> 0x1400073a0
|
||||
virtual void vt1_9_vf_140006b80(); // slot 9 -> 0x140006b80
|
||||
virtual void vt1_10_vf_140006b80(); // slot 10 -> 0x140006b80
|
||||
virtual void vt1_11_vf_140006b80(); // slot 11 -> 0x140006b80
|
||||
virtual void vt1_12_vf_140006b80(); // slot 12 -> 0x140006b80
|
||||
virtual void vt1_13_vf_140006b80(); // slot 13 -> 0x140006b80
|
||||
};
|
||||
|
||||
// MBISingleton<MagiAgentProcess> (template instantiation) vftable 0x14011d240: 0x14000b910
|
||||
|
||||
class MagiAgentProcess {
|
||||
public:
|
||||
// vt0: vftable 0x14011d230
|
||||
virtual void vt0_0_vf_140008c10(); // slot 0 -> 0x140008c10
|
||||
};
|
||||
|
||||
// MBMultiThreadSync<MBCLog> (template instantiation) vftable 0x14011d748: 0x14000ebb0
|
||||
|
||||
// MBISingleton<MBCLog> (template instantiation) vftable 0x14011d738: 0x14000eb70
|
||||
|
||||
class MBCLog {
|
||||
public:
|
||||
// vt0: vftable 0x14011d728
|
||||
virtual void vt0_0_vf_14000ecb0(); // slot 0 -> 0x14000ecb0
|
||||
// vt1: vftable 0x14011d718
|
||||
virtual void vt1_0_vf_14000eb10(); // slot 0 -> 0x14000eb10
|
||||
};
|
||||
|
||||
// MBISingleton<Clock> (template instantiation) vftable 0x14011e9e8: 0x140016290
|
||||
|
||||
class Clock {
|
||||
public:
|
||||
// vt0: vftable 0x14011e9d8
|
||||
virtual void vt0_0_vf_1400162d0(); // slot 0 -> 0x1400162d0
|
||||
// vt1: vftable 0x14011e9b0
|
||||
virtual void vt1_0_vf_1400161b0(); // slot 0 -> 0x1400161b0
|
||||
virtual void vt1_1_vf_1400161a0(); // slot 1 -> 0x1400161a0
|
||||
virtual void vt1_2_vf_1400dc2d0(); // slot 2 -> 0x1400dc2d0
|
||||
virtual void vt1_3_vf_1400dc230(); // slot 3 -> 0x1400dc230
|
||||
};
|
||||
|
||||
class ISubject {
|
||||
public:
|
||||
// vt0: vftable 0x14011e988
|
||||
virtual void vt0_0_vf_140016170(); // slot 0 -> 0x140016170
|
||||
virtual void vt0_pure1() = 0; // slot 1 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure2() = 0; // slot 2 -> 0x14003b036 (_purecall)
|
||||
virtual void vt0_pure3() = 0; // slot 3 -> 0x14003b036 (_purecall)
|
||||
};
|
||||
|
||||
class TimeSourceHRWin32 {
|
||||
public:
|
||||
// vt0: vftable 0x14011ea10
|
||||
virtual void vt0_0_vf_1400162e0(); // slot 0 -> 0x1400162e0
|
||||
virtual void vt0_1_vf_1400dc130(); // slot 1 -> 0x1400dc130
|
||||
};
|
||||
|
||||
class TimeSource {
|
||||
public:
|
||||
// vt0: vftable 0x14011e9f8
|
||||
virtual void vt0_0_vf_1400162e0(); // slot 0 -> 0x1400162e0
|
||||
virtual void vt0_pure1() = 0; // slot 1 -> 0x14003b036 (_purecall)
|
||||
};
|
||||
|
||||
namespace Magi {
|
||||
class Timer {
|
||||
public:
|
||||
// vt0: vftable 0x14011ea40
|
||||
virtual void vt0_0_vf_140016350(); // slot 0 -> 0x140016350
|
||||
virtual void vt0_1_vf_1400dc040(); // slot 1 -> 0x1400dc040
|
||||
};
|
||||
}
|
||||
|
||||
class IObserver {
|
||||
public:
|
||||
// vt0: vftable 0x14011ea28
|
||||
virtual void vt0_0_vf_140016320(); // slot 0 -> 0x140016320
|
||||
virtual void vt0_pure1() = 0; // slot 1 -> 0x14003b036 (_purecall)
|
||||
};
|
||||
|
||||
namespace RNP {
|
||||
class Server2AgentStub {
|
||||
public:
|
||||
// vt0: vftable 0x14011f108
|
||||
virtual void vt0_0_vf_140006b70(); // slot 0 -> 0x140006b70
|
||||
virtual void vt0_1_vf_140006b60(); // slot 1 -> 0x140006b60
|
||||
virtual void vt0_2_vf_140018120(); // slot 2 -> 0x140018120
|
||||
virtual void vt0_3_vf_140006b80(); // slot 3 -> 0x140006b80
|
||||
virtual void vt0_4_vf_140006b80(); // slot 4 -> 0x140006b80
|
||||
virtual void vt0_5_vf_140006b30(); // slot 5 -> 0x140006b30
|
||||
virtual void vt0_6_scalar_deleting_dtor(); // slot 6 -> 0x14001ac20
|
||||
virtual void vt0_7_vf_140006b20(); // slot 7 -> 0x140006b20
|
||||
virtual void vt0_8_vf_140006b20(); // slot 8 -> 0x140006b20
|
||||
virtual void vt0_9_vf_140006b20(); // slot 9 -> 0x140006b20
|
||||
virtual void vt0_10_vf_140006b20(); // slot 10 -> 0x140006b20
|
||||
virtual void vt0_11_vf_140006b20(); // slot 11 -> 0x140006b20
|
||||
virtual void vt0_12_vf_140006b20(); // slot 12 -> 0x140006b20
|
||||
virtual void vt0_13_vf_140006b20(); // slot 13 -> 0x140006b20
|
||||
virtual void vt0_14_vf_140006b20(); // slot 14 -> 0x140006b20
|
||||
virtual void vt0_15_vf_140006b20(); // slot 15 -> 0x140006b20
|
||||
virtual void vt0_16_vf_140006b20(); // slot 16 -> 0x140006b20
|
||||
virtual void vt0_17_vf_140006b20(); // slot 17 -> 0x140006b20
|
||||
virtual void vt0_18_vf_140006b20(); // slot 18 -> 0x140006b20
|
||||
};
|
||||
}
|
||||
|
||||
namespace RNP {
|
||||
class Agent2ServerProxy {
|
||||
public:
|
||||
// vt0: vftable 0x14011eff8
|
||||
virtual void vt0_0_vf_1400163b0(); // slot 0 -> 0x1400163b0
|
||||
virtual void vt0_1_vf_1400163c0(); // slot 1 -> 0x1400163c0
|
||||
virtual void vt0_2_vf_140006b80(); // slot 2 -> 0x140006b80
|
||||
virtual void vt0_3_vf_140082060(); // slot 3 -> 0x140082060
|
||||
virtual void vt0_4_scalar_deleting_dtor(); // slot 4 -> 0x14001abd0
|
||||
virtual void vt0_5_vf_1400165e0(); // slot 5 -> 0x1400165e0
|
||||
virtual void vt0_6_vf_140016400(); // slot 6 -> 0x140016400
|
||||
virtual void vt0_7_vf_1400168d0(); // slot 7 -> 0x1400168d0
|
||||
virtual void vt0_8_vf_1400167f0(); // slot 8 -> 0x1400167f0
|
||||
virtual void vt0_9_vf_140016aa0(); // slot 9 -> 0x140016aa0
|
||||
virtual void vt0_10_vf_1400169b0(); // slot 10 -> 0x1400169b0
|
||||
virtual void vt0_11_vf_140016c70(); // slot 11 -> 0x140016c70
|
||||
virtual void vt0_12_vf_140016b90(); // slot 12 -> 0x140016b90
|
||||
virtual void vt0_13_vf_140016e50(); // slot 13 -> 0x140016e50
|
||||
virtual void vt0_14_vf_140016d50(); // slot 14 -> 0x140016d50
|
||||
virtual void vt0_15_vf_140017040(); // slot 15 -> 0x140017040
|
||||
virtual void vt0_16_vf_140016f60(); // slot 16 -> 0x140016f60
|
||||
virtual void vt0_17_vf_140017210(); // slot 17 -> 0x140017210
|
||||
virtual void vt0_18_vf_140017120(); // slot 18 -> 0x140017120
|
||||
virtual void vt0_19_vf_1400173f0(); // slot 19 -> 0x1400173f0
|
||||
virtual void vt0_20_vf_140017310(); // slot 20 -> 0x140017310
|
||||
virtual void vt0_21_vf_1400175f0(); // slot 21 -> 0x1400175f0
|
||||
virtual void vt0_22_vf_1400174d0(); // slot 22 -> 0x1400174d0
|
||||
virtual void vt0_23_vf_140017810(); // slot 23 -> 0x140017810
|
||||
virtual void vt0_24_vf_140017720(); // slot 24 -> 0x140017720
|
||||
virtual void vt0_25_vf_1400179f0(); // slot 25 -> 0x1400179f0
|
||||
virtual void vt0_26_vf_140017900(); // slot 26 -> 0x140017900
|
||||
virtual void vt0_27_vf_140017bd0(); // slot 27 -> 0x140017bd0
|
||||
virtual void vt0_28_vf_140017ae0(); // slot 28 -> 0x140017ae0
|
||||
virtual void vt0_29_vf_140017dd0(); // slot 29 -> 0x140017dd0
|
||||
virtual void vt0_30_vf_140017cc0(); // slot 30 -> 0x140017cc0
|
||||
virtual void vt0_31_vf_140018000(); // slot 31 -> 0x140018000
|
||||
virtual void vt0_32_vf_140017ef0(); // slot 32 -> 0x140017ef0
|
||||
};
|
||||
}
|
||||
|
||||
namespace AGENT2SERVER_PROTOCOL {
|
||||
class Proxy {
|
||||
public:
|
||||
// vt0: vftable 0x14011eee8
|
||||
virtual void vt0_0_vf_1400163b0(); // slot 0 -> 0x1400163b0
|
||||
virtual void vt0_1_vf_1400163c0(); // slot 1 -> 0x1400163c0
|
||||
virtual void vt0_2_vf_140093300(); // slot 2 -> 0x140093300
|
||||
virtual void vt0_3_vf_140082060(); // slot 3 -> 0x140082060
|
||||
virtual void vt0_4_vf_1400163d0(); // slot 4 -> 0x1400163d0
|
||||
virtual void vt0_5_vf_1400165e0(); // slot 5 -> 0x1400165e0
|
||||
virtual void vt0_6_vf_140016400(); // slot 6 -> 0x140016400
|
||||
virtual void vt0_7_vf_1400168d0(); // slot 7 -> 0x1400168d0
|
||||
virtual void vt0_8_vf_1400167f0(); // slot 8 -> 0x1400167f0
|
||||
virtual void vt0_9_vf_140016aa0(); // slot 9 -> 0x140016aa0
|
||||
virtual void vt0_10_vf_1400169b0(); // slot 10 -> 0x1400169b0
|
||||
virtual void vt0_11_vf_140016c70(); // slot 11 -> 0x140016c70
|
||||
virtual void vt0_12_vf_140016b90(); // slot 12 -> 0x140016b90
|
||||
virtual void vt0_13_vf_140016e50(); // slot 13 -> 0x140016e50
|
||||
virtual void vt0_14_vf_140016d50(); // slot 14 -> 0x140016d50
|
||||
virtual void vt0_15_vf_140017040(); // slot 15 -> 0x140017040
|
||||
virtual void vt0_16_vf_140016f60(); // slot 16 -> 0x140016f60
|
||||
virtual void vt0_17_vf_140017210(); // slot 17 -> 0x140017210
|
||||
virtual void vt0_18_vf_140017120(); // slot 18 -> 0x140017120
|
||||
virtual void vt0_19_vf_1400173f0(); // slot 19 -> 0x1400173f0
|
||||
virtual void vt0_20_vf_140017310(); // slot 20 -> 0x140017310
|
||||
virtual void vt0_21_vf_1400175f0(); // slot 21 -> 0x1400175f0
|
||||
virtual void vt0_22_vf_1400174d0(); // slot 22 -> 0x1400174d0
|
||||
virtual void vt0_23_vf_140017810(); // slot 23 -> 0x140017810
|
||||
virtual void vt0_24_vf_140017720(); // slot 24 -> 0x140017720
|
||||
virtual void vt0_25_vf_1400179f0(); // slot 25 -> 0x1400179f0
|
||||
virtual void vt0_26_vf_140017900(); // slot 26 -> 0x140017900
|
||||
virtual void vt0_27_vf_140017bd0(); // slot 27 -> 0x140017bd0
|
||||
virtual void vt0_28_vf_140017ae0(); // slot 28 -> 0x140017ae0
|
||||
virtual void vt0_29_vf_140017dd0(); // slot 29 -> 0x140017dd0
|
||||
virtual void vt0_30_vf_140017cc0(); // slot 30 -> 0x140017cc0
|
||||
virtual void vt0_31_vf_140018000(); // slot 31 -> 0x140018000
|
||||
virtual void vt0_32_vf_140017ef0(); // slot 32 -> 0x140017ef0
|
||||
};
|
||||
}
|
||||
|
||||
namespace RNP {
|
||||
class AgentManager2AgentStub {
|
||||
public:
|
||||
// vt0: vftable 0x14011f448
|
||||
virtual void vt0_0_vf_140008c00(); // slot 0 -> 0x140008c00
|
||||
virtual void vt0_1_vf_140008bf0(); // slot 1 -> 0x140008bf0
|
||||
virtual void vt0_2_vf_14001d960(); // slot 2 -> 0x14001d960
|
||||
virtual void vt0_3_vf_140006b80(); // slot 3 -> 0x140006b80
|
||||
virtual void vt0_4_vf_140006b80(); // slot 4 -> 0x140006b80
|
||||
virtual void vt0_5_vf_140006b30(); // slot 5 -> 0x140006b30
|
||||
virtual void vt0_6_scalar_deleting_dtor(); // slot 6 -> 0x140021110
|
||||
virtual void vt0_7_vf_140006b20(); // slot 7 -> 0x140006b20
|
||||
virtual void vt0_8_vf_140006b20(); // slot 8 -> 0x140006b20
|
||||
virtual void vt0_9_vf_140006b20(); // slot 9 -> 0x140006b20
|
||||
virtual void vt0_10_vf_140006b20(); // slot 10 -> 0x140006b20
|
||||
virtual void vt0_11_vf_140006b20(); // slot 11 -> 0x140006b20
|
||||
virtual void vt0_12_vf_140006b20(); // slot 12 -> 0x140006b20
|
||||
virtual void vt0_13_vf_140006b20(); // slot 13 -> 0x140006b20
|
||||
virtual void vt0_14_vf_140006b20(); // slot 14 -> 0x140006b20
|
||||
virtual void vt0_15_vf_140006b20(); // slot 15 -> 0x140006b20
|
||||
virtual void vt0_16_vf_140006b20(); // slot 16 -> 0x140006b20
|
||||
virtual void vt0_17_vf_140006b20(); // slot 17 -> 0x140006b20
|
||||
virtual void vt0_18_vf_140006b20(); // slot 18 -> 0x140006b20
|
||||
virtual void vt0_19_vf_140006b20(); // slot 19 -> 0x140006b20
|
||||
virtual void vt0_20_vf_140006b20(); // slot 20 -> 0x140006b20
|
||||
virtual void vt0_21_vf_140006b20(); // slot 21 -> 0x140006b20
|
||||
virtual void vt0_22_vf_140006b20(); // slot 22 -> 0x140006b20
|
||||
virtual void vt0_23_vf_140006b20(); // slot 23 -> 0x140006b20
|
||||
};
|
||||
}
|
||||
|
||||
namespace RNP {
|
||||
class Agent2AgentManagerProxy {
|
||||
public:
|
||||
// vt0: vftable 0x14011f368
|
||||
virtual void vt0_0_vf_14001c210(); // slot 0 -> 0x14001c210
|
||||
virtual void vt0_1_vf_14001c220(); // slot 1 -> 0x14001c220
|
||||
virtual void vt0_2_vf_140006b80(); // slot 2 -> 0x140006b80
|
||||
virtual void vt0_3_vf_140082060(); // slot 3 -> 0x140082060
|
||||
virtual void vt0_4_scalar_deleting_dtor(); // slot 4 -> 0x1400210c0
|
||||
virtual void vt0_5_vf_14001c340(); // slot 5 -> 0x14001c340
|
||||
virtual void vt0_6_vf_14001c230(); // slot 6 -> 0x14001c230
|
||||
virtual void vt0_7_vf_14001c600(); // slot 7 -> 0x14001c600
|
||||
virtual void vt0_8_vf_14001c470(); // slot 8 -> 0x14001c470
|
||||
virtual void vt0_9_vf_14001c8a0(); // slot 9 -> 0x14001c8a0
|
||||
virtual void vt0_10_vf_14001c7a0(); // slot 10 -> 0x14001c7a0
|
||||
virtual void vt0_11_vf_14001cac0(); // slot 11 -> 0x14001cac0
|
||||
virtual void vt0_12_vf_14001c9b0(); // slot 12 -> 0x14001c9b0
|
||||
virtual void vt0_13_vf_14001ccf0(); // slot 13 -> 0x14001ccf0
|
||||
virtual void vt0_14_vf_14001cbe0(); // slot 14 -> 0x14001cbe0
|
||||
virtual void vt0_15_vf_14001cf30(); // slot 15 -> 0x14001cf30
|
||||
virtual void vt0_16_vf_14001ce10(); // slot 16 -> 0x14001ce10
|
||||
virtual void vt0_17_vf_14001d150(); // slot 17 -> 0x14001d150
|
||||
virtual void vt0_18_vf_14001d060(); // slot 18 -> 0x14001d060
|
||||
virtual void vt0_19_vf_14001d340(); // slot 19 -> 0x14001d340
|
||||
virtual void vt0_20_vf_14001d250(); // slot 20 -> 0x14001d250
|
||||
virtual void vt0_21_vf_14001d520(); // slot 21 -> 0x14001d520
|
||||
virtual void vt0_22_vf_14001d430(); // slot 22 -> 0x14001d430
|
||||
virtual void vt0_23_vf_14001d6f0(); // slot 23 -> 0x14001d6f0
|
||||
virtual void vt0_24_vf_14001d610(); // slot 24 -> 0x14001d610
|
||||
virtual void vt0_25_vf_14001d890(); // slot 25 -> 0x14001d890
|
||||
virtual void vt0_26_vf_14001d7d0(); // slot 26 -> 0x14001d7d0
|
||||
};
|
||||
}
|
||||
|
||||
namespace AGENT2AGENTMANAGER_PROTOCOL {
|
||||
class Proxy {
|
||||
public:
|
||||
// vt0: vftable 0x14011f288
|
||||
virtual void vt0_0_vf_14001c210(); // slot 0 -> 0x14001c210
|
||||
virtual void vt0_1_vf_14001c220(); // slot 1 -> 0x14001c220
|
||||
virtual void vt0_2_vf_140093300(); // slot 2 -> 0x140093300
|
||||
virtual void vt0_3_vf_140082060(); // slot 3 -> 0x140082060
|
||||
virtual void vt0_4_vf_1400163d0(); // slot 4 -> 0x1400163d0
|
||||
virtual void vt0_5_vf_14001c340(); // slot 5 -> 0x14001c340
|
||||
virtual void vt0_6_vf_14001c230(); // slot 6 -> 0x14001c230
|
||||
virtual void vt0_7_vf_14001c600(); // slot 7 -> 0x14001c600
|
||||
virtual void vt0_8_vf_14001c470(); // slot 8 -> 0x14001c470
|
||||
virtual void vt0_9_vf_14001c8a0(); // slot 9 -> 0x14001c8a0
|
||||
virtual void vt0_10_vf_14001c7a0(); // slot 10 -> 0x14001c7a0
|
||||
virtual void vt0_11_vf_14001cac0(); // slot 11 -> 0x14001cac0
|
||||
virtual void vt0_12_vf_14001c9b0(); // slot 12 -> 0x14001c9b0
|
||||
virtual void vt0_13_vf_14001ccf0(); // slot 13 -> 0x14001ccf0
|
||||
virtual void vt0_14_vf_14001cbe0(); // slot 14 -> 0x14001cbe0
|
||||
virtual void vt0_15_vf_14001cf30(); // slot 15 -> 0x14001cf30
|
||||
virtual void vt0_16_vf_14001ce10(); // slot 16 -> 0x14001ce10
|
||||
virtual void vt0_17_vf_14001d150(); // slot 17 -> 0x14001d150
|
||||
virtual void vt0_18_vf_14001d060(); // slot 18 -> 0x14001d060
|
||||
virtual void vt0_19_vf_14001d340(); // slot 19 -> 0x14001d340
|
||||
virtual void vt0_20_vf_14001d250(); // slot 20 -> 0x14001d250
|
||||
virtual void vt0_21_vf_14001d520(); // slot 21 -> 0x14001d520
|
||||
virtual void vt0_22_vf_14001d430(); // slot 22 -> 0x14001d430
|
||||
virtual void vt0_23_vf_14001d6f0(); // slot 23 -> 0x14001d6f0
|
||||
virtual void vt0_24_vf_14001d610(); // slot 24 -> 0x14001d610
|
||||
virtual void vt0_25_vf_14001d890(); // slot 25 -> 0x14001d890
|
||||
virtual void vt0_26_vf_14001d7d0(); // slot 26 -> 0x14001d7d0
|
||||
};
|
||||
}
|
||||
|
||||
// MBISingleton<MagiServerOption> (template instantiation) vftable 0x14011ff98: 0x14002a780
|
||||
|
||||
class MagiServerOption {
|
||||
public:
|
||||
// vt0: vftable 0x14011fe48
|
||||
virtual void vt0_0_vf_140022630(); // slot 0 -> 0x140022630
|
||||
};
|
||||
|
||||
// MBISingleton<MagiServerFile> (template instantiation) vftable 0x14011fff8: 0x14002abf0
|
||||
|
||||
class MagiServerFile {
|
||||
public:
|
||||
// vt0: vftable 0x14011ffe8
|
||||
virtual void vt0_0_vf_14002a7e0(); // slot 0 -> 0x14002a7e0
|
||||
};
|
||||
|
||||
// MBISingleton<MagiCustomOption> (template instantiation) vftable 0x1401204f8: 0x14002c2f0
|
||||
|
||||
class MagiCustomOption {
|
||||
public:
|
||||
// vt0: vftable 0x1401204e8
|
||||
virtual void vt0_0_vf_14002b7b0(); // slot 0 -> 0x14002b7b0
|
||||
};
|
||||
|
||||
// MBISingleton<MagiServerManager> (template instantiation) vftable 0x140120600: 0x14002e180
|
||||
|
||||
class MagiServerManager {
|
||||
public:
|
||||
// vt0: vftable 0x1401205f0
|
||||
virtual void vt0_0_vf_14002c390(); // slot 0 -> 0x14002c390
|
||||
};
|
||||
|
||||
// MBISingleton<MagiAgentCommon> (template instantiation) vftable 0x140120620: 0x14002e410
|
||||
|
||||
class MagiAgentCommon {
|
||||
public:
|
||||
// vt0: vftable 0x140120610
|
||||
virtual void vt0_0_vf_14002e330(); // slot 0 -> 0x14002e330
|
||||
};
|
||||
|
||||
// MBISingleton<MagiRealTimeEventData> (template instantiation) vftable 0x140120640: 0x14002e5a0
|
||||
|
||||
class MagiRealTimeEventData {
|
||||
public:
|
||||
// vt0: vftable 0x140120630
|
||||
virtual void vt0_0_vf_14002e470(); // slot 0 -> 0x14002e470
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue