decompiled agent_release

This commit is contained in:
Benjamin Palko 2026-10-14 16:45:19 -04:00
parent baac905ef2
commit 11a3488883
6439 changed files with 229565 additions and 1 deletions

View file

@ -0,0 +1,385 @@
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400037a0 FUN_1400037a0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 FUN_1400037a0(longlong param_1,undefined8 **param_2,undefined8 *param_3,uint *param_4)
{
int *piVar1;
double dVar2;
char cVar3;
undefined8 *puVar4;
undefined1 auVar5 [16];
bool bVar6;
bool bVar7;
longlong *plVar8;
BOOL BVar9;
wchar_t *pwVar10;
wchar_t *pwVar11;
ulonglong uVar12;
longlong *plVar13;
wchar_t *pwVar14;
char *pcVar15;
ulonglong *puVar16;
longlong *plVar17;
undefined2 *puVar18;
wchar_t *pwVar19;
longlong lVar20;
undefined4 uVar21;
undefined4 uVar22;
undefined4 uVar23;
undefined4 uVar24;
undefined4 uVar25;
undefined1 auStack_2a8 [32];
longlong *local_288;
wchar_t *local_280;
LARGE_INTEGER local_278;
undefined8 *local_270;
wchar_t *local_268;
wchar_t *local_260;
int *local_258;
undefined1 local_250;
undefined8 local_248;
undefined2 local_238;
undefined1 local_236 [158];
undefined1 local_198 [160];
undefined8 *local_f8;
undefined2 local_f0;
undefined6 uStack_ee;
undefined8 local_e0;
ulonglong local_d8;
undefined2 local_c8;
undefined6 uStack_c6;
undefined8 local_b8;
ulonglong local_b0;
ulonglong local_98;
local_248 = 0xfffffffffffffffe;
local_98 = DAT_1401555a0 ^ (ulonglong)auStack_2a8;
FUN_140010960(L"# Agent Startup #\n\n",param_2,param_3,param_4);
CoInitialize((LPVOID)0x0);
FUN_140010aa0(L"+ Prepare Startup\n",param_2,param_3,param_4);
local_278 = (LARGE_INTEGER)operator_new(0xb8);
pwVar19 = (wchar_t *)0x0;
pwVar10 = pwVar19;
if ((undefined8 *)local_278.QuadPart != (undefined8 *)0x0) {
pwVar10 = (wchar_t *)FUN_140005020((undefined8 *)local_278,param_2,param_3,param_4);
}
if (pwVar10 == (wchar_t *)0x0) {
local_288 = (longlong *)0x0;
}
else {
local_288 = (longlong *)FUN_140030280(0x10);
local_288[1] = 1;
*local_288 = (longlong)pwVar10;
}
plVar17 = local_288;
pwVar11 = operator_new(0x68);
pwVar10 = pwVar19;
local_280 = pwVar11;
if (pwVar11 != (wchar_t *)0x0) {
if (plVar17 != (longlong *)0x0) {
pwVar10 = (wchar_t *)*plVar17;
}
*(wchar_t **)pwVar11 = pwVar10;
pwVar11[4] = L'\0';
pwVar11[5] = L'\0';
pwVar11[6] = L'\0';
pwVar11[7] = L'\0';
pwVar11[8] = L'\0';
pwVar11[9] = L'\0';
pwVar11[10] = L'\0';
pwVar11[0xb] = L'\0';
pwVar11[0xc] = L'\0';
pwVar11[0xd] = L'\0';
pwVar11[0xe] = L'\0';
pwVar11[0xf] = L'\0';
uVar12 = FUN_14002e790();
param_2 = (undefined8 **)(uVar12 & 0xffffffff);
param_3 = (undefined8 *)CONCAT71((int7)((ulonglong)param_3 >> 8),1);
FUN_14002e600((undefined4 *)(pwVar11 + 0x14),(ulonglong)param_2,param_3,param_4);
FUN_140007960((longlong)pwVar11);
pwVar10 = pwVar11;
}
if (pwVar10 == (wchar_t *)0x0) {
local_280 = (wchar_t *)0x0;
}
else {
local_280 = (wchar_t *)FUN_140030280(0x10);
*(undefined8 *)((longlong)local_280 + 8) = 1;
*(wchar_t **)local_280 = pwVar10;
}
pwVar10 = local_280;
pwVar11 = pwVar19;
if (plVar17 != (longlong *)0x0) {
pwVar11 = (wchar_t *)*plVar17;
}
*(wchar_t **)(param_1 + 0xa0) = pwVar11;
pwVar11 = pwVar19;
if (local_280 != (wchar_t *)0x0) {
pwVar11 = *(wchar_t **)local_280;
}
*(wchar_t **)(param_1 + 0xa8) = pwVar11;
pwVar11 = pwVar19;
if (local_280 != (wchar_t *)0x0) {
pwVar11 = *(wchar_t **)local_280;
}
FUN_140007960((longlong)pwVar11);
local_f8 = (undefined8 *)0x0;
local_d8 = 7;
local_e0 = 0;
local_f0 = 0;
local_b0 = 7;
local_b8 = 0;
local_c8 = 0;
if (*(longlong *)(DAT_140162d68 + 0x1c8) != 0) {
auVar5._8_8_ = 0;
auVar5._0_8_ = *(ulonglong *)(DAT_140162d68 + 0x1b0);
param_2 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x15)) % auVar5,0);
local_270 = (undefined8 *)(*(longlong *)(DAT_140162d68 + 0x1a8) + (longlong)param_2 * 8);
for (local_268 = (wchar_t *)*local_270; local_268 != (wchar_t *)0x0;
local_268 = *(wchar_t **)local_268) {
if ((char)local_268[4] == '\x15') {
if (local_268 != (wchar_t *)0x0) goto LAB_1400039c4;
break;
}
}
}
local_270 = (undefined8 *)0x0;
local_268 = pwVar19;
LAB_1400039c4:
if ((local_268 != (wchar_t *)0x0) &&
(puVar4 = *(undefined8 **)(local_268 + 8), puVar4 != *(undefined8 **)(local_268 + 0xc))) {
local_f8 = (undefined8 *)*puVar4;
FUN_140001600((longlong *)&local_f0,puVar4 + 1,0,0xffffffffffffffff);
param_4 = (uint *)0xffffffffffffffff;
param_3 = (undefined8 *)0x0;
FUN_140001600((longlong *)&local_c8,puVar4 + 6,0,0xffffffffffffffff);
param_2 = &local_f8;
FUN_140007a80(*(undefined8 **)(param_1 + 0xa8),param_2,param_3,(undefined8 *)param_4);
lVar20 = *(longlong *)(param_1 + 0xa8);
piVar1 = (int *)(lVar20 + 0x28);
local_258 = piVar1;
FUN_14002e6e0(piVar1);
plVar13 = *(longlong **)(lVar20 + 8);
if (*plVar13 == 0) {
FUN_14002e770((longlong)piVar1);
local_250 = 0;
}
else {
lVar20 = *plVar13;
FUN_14002e770((longlong)piVar1);
local_250 = 0;
if (lVar20 != 0) {
cVar3 = *(char *)(lVar20 + 0x88);
while (cVar3 == '\0') {
FUN_1400023e0(lVar20);
cVar3 = *(char *)(lVar20 + 0x88);
}
}
}
}
pwVar11 = pwVar19;
if (plVar17 != (longlong *)0x0) {
pwVar11 = (wchar_t *)*plVar17;
}
FUN_140005360((longlong)pwVar11,param_2,param_3,(longlong)param_4);
pwVar11 = pwVar19;
if (plVar17 != (longlong *)0x0) {
pwVar11 = (wchar_t *)*plVar17;
}
*(undefined8 *)(pwVar11 + 0x24) = *(undefined8 *)(param_1 + 0xa8);
FUN_140010960(L"\n # Agent Running... #\n",param_2,param_3,param_4);
plVar13 = operator_new(0x18);
if (plVar13 == (longlong *)0x0) {
plVar13 = (longlong *)0x0;
}
else {
*plVar13 = (longlong)TimeSourceHRWin32::vftable;
BVar9 = QueryPerformanceFrequency(&local_278);
if (BVar9 == 0) {
*(undefined1 *)(plVar13 + 2) = 0;
GetLastError();
}
else {
*(undefined1 *)(plVar13 + 2) = 1;
plVar13[1] = (longlong)(1.0 / (double)local_278.QuadPart);
}
}
plVar8 = DAT_140162d50;
if ((undefined8 *)DAT_140162d50[2] != (undefined8 *)0x0) {
(*(code *)**(undefined8 **)DAT_140162d50[2])();
}
plVar8[2] = (longlong)plVar13;
if (plVar13 != (longlong *)0x0) {
lVar20 = (**(code **)(*plVar13 + 8))(plVar13);
plVar8[6] = lVar20;
plVar8[7] = lVar20;
}
plVar8[0x12] = 0x3ff0000000000000;
pwVar14 = operator_new(0x28);
pwVar11 = pwVar19;
local_260 = pwVar14;
if (pwVar14 != (wchar_t *)0x0) {
*(undefined ***)pwVar14 = Magi::Timer::vftable;
plVar13 = DAT_140162d50;
*(longlong **)(pwVar14 + 4) = DAT_140162d50;
pwVar14[8] = L'\0';
pwVar14[9] = L'\0';
pwVar14[10] = L'\0';
pwVar14[0xb] = L'\0';
pwVar14[0xc] = L'\0';
pwVar14[0xd] = L'\0';
pwVar14[0xe] = L'\0';
pwVar14[0xf] = L'\0';
*(undefined1 *)(pwVar14 + 0x10) = 0;
pwVar14[0x12] = L'\0';
pwVar14[0x13] = L'㾀';
(**(code **)(*plVar13 + 0x10))();
pwVar11 = pwVar14;
}
*(wchar_t **)(param_1 + 0x50) = pwVar11;
bVar6 = true;
local_238 = 0;
memset(local_236,0,0x9e);
puVar16 = (ulonglong *)0x0;
puVar18 = (undefined2 *)0xa0;
memset(local_198,0,0xa0);
uVar21 = 0;
uVar23 = 0;
FUN_1400271e0(DAT_140162d68);
pcVar15 = *(char **)(DAT_140162d58 + 8);
do {
pwVar11 = pwVar19;
if (pcVar15 == *(char **)(DAT_140162d58 + 0x10)) {
LAB_140003c4a:
FUN_140009780(pwVar11);
FUN_140001dc0(param_1 + 8);
bVar7 = false;
cVar3 = *(char *)(param_1 + 0x60);
uVar24 = uVar21;
uVar25 = uVar23;
while (cVar3 != '\0') {
FUN_1400dc520((longlong)DAT_140162d50);
dVar2 = *(double *)(*(longlong *)(param_1 + 0x50) + 0x10);
if (((0.0 < *(double *)(DAT_140162d68 + 0x178)) &&
(0.0 < dVar2 - *(double *)(DAT_140162d68 + 0x178))) && (bVar6)) {
bVar6 = false;
pcVar15 = "Start Auto Server On. \n";
printf("Start Auto Server On. \n");
FUN_140009bd0(pcVar15,puVar16,puVar18,param_4);
}
FUN_140007da0(*(longlong *)(param_1 + 0xa8),dVar2);
uVar22 = (undefined4)((ulonglong)dVar2 >> 0x20);
if (1.0 <= dVar2 - (double)CONCAT44(uVar23,uVar21)) {
if (DAT_140162cc4 != 0) {
puVar16 = (ulonglong *)&DAT_14011b7b4;
if (bVar7) {
puVar16 = (ulonglong *)&DAT_14011b7b0;
}
puVar18 = (undefined2 *)(ulonglong)DAT_140162cc8;
printf("[ %s ] FPS[ %d ]\n");
bVar7 = !bVar7;
}
_DAT_140162ccc = DAT_140162cc8;
DAT_140162cc8 = 0;
uVar21 = SUB84(dVar2,0);
uVar23 = uVar22;
}
if (0.10000000149011612 <= dVar2 - (double)CONCAT44(uVar25,uVar24)) {
DAT_140162cc8 = DAT_140162cc8 + 1;
FUN_140003f30(param_1,puVar16,puVar18,param_4);
pwVar11 = pwVar19;
if (plVar17 != (longlong *)0x0) {
pwVar11 = (wchar_t *)*plVar17;
}
FUN_1400053e0((longlong)pwVar11,dVar2);
uVar24 = SUB84(dVar2,0);
uVar25 = uVar22;
}
*(double *)(param_1 + 0x58) = dVar2;
Sleep(1);
cVar3 = *(char *)(param_1 + 0x60);
}
FUN_140010aa0(L"+ Prepare Stop\n",puVar16,puVar18,param_4);
FUN_1400079d0(*(longlong *)(param_1 + 0xa8));
lVar20 = *(longlong *)(param_1 + 0xa0);
puVar4 = *(undefined8 **)(lVar20 + 0x28);
if (puVar4 != (undefined8 *)0x0) {
puVar16 = (ulonglong *)0x1;
(**(code **)*puVar4)();
}
*(undefined8 *)(lVar20 + 0x28) = 0;
CoUninitialize();
FUN_140010960(L"# Agent Stoped... #\n",puVar16,puVar18,param_4);
if (7 < local_b0) {
operator_delete((void *)CONCAT62(uStack_c6,local_c8));
}
local_b0 = 7;
local_b8 = 0;
local_c8 = 0;
if (7 < local_d8) {
operator_delete((void *)CONCAT62(uStack_ee,local_f0));
}
pwVar19 = local_280;
local_d8 = 7;
local_e0 = 0;
local_f0 = 0;
if (pwVar10 != (wchar_t *)0x0) {
plVar13 = (longlong *)((longlong)pwVar10 + 8);
*plVar13 = *plVar13 + -1;
plVar17 = local_288;
if (*plVar13 == 0) {
pwVar10 = *(wchar_t **)local_280;
local_260 = pwVar10;
if (pwVar10 != (wchar_t *)0x0) {
FUN_14002e7a0((undefined4 *)(pwVar10 + 0x14),puVar16,puVar18,param_4);
if (*(void **)(pwVar10 + 4) != (void *)0x0) {
operator_delete(*(void **)(pwVar10 + 4));
}
pwVar10[4] = L'\0';
pwVar10[5] = L'\0';
pwVar10[6] = L'\0';
pwVar10[7] = L'\0';
pwVar10[8] = L'\0';
pwVar10[9] = L'\0';
pwVar10[10] = L'\0';
pwVar10[0xb] = L'\0';
pwVar10[0xc] = L'\0';
pwVar10[0xd] = L'\0';
pwVar10[0xe] = L'\0';
pwVar10[0xf] = L'\0';
operator_delete(pwVar10);
}
FUN_1400302f0(pwVar19);
plVar17 = local_288;
}
}
plVar13 = local_288;
if (plVar17 != (longlong *)0x0) {
plVar17 = plVar17 + 1;
*plVar17 = *plVar17 + -1;
if (*plVar17 == 0) {
puVar4 = (undefined8 *)*local_288;
if (puVar4 != (undefined8 *)0x0) {
(**(code **)*puVar4)(puVar4,1);
}
FUN_1400302f0(plVar13);
}
}
return 0;
}
if (*pcVar15 == '\x18') {
pwVar11 = (wchar_t *)(pcVar15 + 8);
if (7 < *(ulonglong *)(pcVar15 + 0x20)) {
pwVar11 = *(wchar_t **)(pcVar15 + 8);
}
goto LAB_140003c4a;
}
pcVar15 = pcVar15 + 0x30;
} while( true );
}