179 lines
4.8 KiB
C
179 lines
4.8 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x140005950 FUN_140005950
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_140005950(longlong param_1,short *param_2,undefined8 param_3,uint *param_4)
|
|
|
|
{
|
|
ulonglong *puVar1;
|
|
ulonglong *puVar2;
|
|
ulonglong *puVar3;
|
|
BOOL BVar4;
|
|
HANDLE hProcess;
|
|
longlong lVar5;
|
|
char *_Format;
|
|
short *psVar6;
|
|
wchar_t *pwVar7;
|
|
ulonglong *puVar8;
|
|
short *psVar9;
|
|
wchar_t *pwVar10;
|
|
bool bVar11;
|
|
undefined1 auStack_188 [32];
|
|
DWORD local_168 [2];
|
|
ulonglong *local_160;
|
|
ulonglong *local_158;
|
|
undefined8 local_150;
|
|
undefined8 local_140;
|
|
undefined4 local_138 [10];
|
|
void *local_110;
|
|
ulonglong local_f8;
|
|
undefined2 local_e8;
|
|
undefined6 uStack_e6;
|
|
undefined8 local_d8;
|
|
ulonglong local_d0;
|
|
undefined2 local_c0;
|
|
undefined6 uStack_be;
|
|
undefined8 local_b0;
|
|
ulonglong local_a8;
|
|
undefined8 local_98;
|
|
ulonglong uStack_90;
|
|
ulonglong local_88;
|
|
ulonglong local_80;
|
|
ulonglong local_78;
|
|
ulonglong local_70;
|
|
ulonglong local_68;
|
|
void *local_60;
|
|
undefined8 local_58;
|
|
undefined8 local_50;
|
|
ulonglong local_38;
|
|
|
|
local_140 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401555a0 ^ (ulonglong)auStack_188;
|
|
bVar11 = local_38 == 0;
|
|
lVar5 = 7;
|
|
pwVar7 = param_2;
|
|
pwVar10 = L"update";
|
|
do {
|
|
if (lVar5 == 0) break;
|
|
lVar5 = lVar5 + -1;
|
|
bVar11 = *pwVar7 == *pwVar10;
|
|
pwVar7 = pwVar7 + 1;
|
|
pwVar10 = pwVar10 + 1;
|
|
} while (bVar11);
|
|
if (!bVar11) {
|
|
lVar5 = 5;
|
|
psVar6 = param_2;
|
|
psVar9 = &DAT_14011ca78;
|
|
do {
|
|
if (lVar5 == 0) break;
|
|
lVar5 = lVar5 + -1;
|
|
bVar11 = *psVar6 == *psVar9;
|
|
psVar6 = psVar6 + 1;
|
|
psVar9 = psVar9 + 1;
|
|
} while (bVar11);
|
|
if (bVar11) {
|
|
local_160 = (ulonglong *)0x0;
|
|
local_158 = (ulonglong *)0x0;
|
|
local_150 = 0;
|
|
FUN_14002ce60(DAT_140162d60,(ulonglong *)&local_160);
|
|
puVar3 = local_158;
|
|
puVar2 = local_160;
|
|
if (local_160 != local_158) {
|
|
puVar8 = local_160 + 0x17;
|
|
do {
|
|
FUN_140004ea0(local_138,(undefined4 *)(puVar8 + -0x17));
|
|
local_98 = puVar8[-3];
|
|
uStack_90 = puVar8[-2];
|
|
local_88 = puVar8[-1];
|
|
local_80 = *puVar8;
|
|
local_78 = puVar8[1];
|
|
local_70 = puVar8[2];
|
|
local_68 = puVar8[3];
|
|
FUN_140004d60(&local_60,(longlong *)(puVar8 + 4));
|
|
hProcess = OpenProcess(0x1f0fff,0,local_98._4_4_);
|
|
if (hProcess != (HANDLE)0x0) {
|
|
BVar4 = GetExitCodeProcess(hProcess,local_168);
|
|
if ((BVar4 != 0) && (local_168[0] == 0x103)) {
|
|
TerminateProcess(hProcess,0);
|
|
}
|
|
CloseHandle(hProcess);
|
|
}
|
|
if (local_60 != (void *)0x0) {
|
|
operator_delete(local_60);
|
|
}
|
|
local_60 = (void *)0x0;
|
|
local_58 = 0;
|
|
local_50 = 0;
|
|
if (7 < local_a8) {
|
|
operator_delete((void *)CONCAT62(uStack_be,local_c0));
|
|
}
|
|
local_a8 = 7;
|
|
local_b0 = 0;
|
|
local_c0 = 0;
|
|
if (7 < local_d0) {
|
|
operator_delete((void *)CONCAT62(uStack_e6,local_e8));
|
|
}
|
|
local_d0 = 7;
|
|
local_d8 = 0;
|
|
local_e8 = 0;
|
|
if (7 < local_f8) {
|
|
operator_delete(local_110);
|
|
}
|
|
puVar1 = puVar8 + 8;
|
|
puVar8 = puVar8 + 0x1f;
|
|
} while (puVar1 != puVar3);
|
|
}
|
|
if (puVar2 != (ulonglong *)0x0) {
|
|
FUN_140004b30(puVar2,puVar3);
|
|
operator_delete(puVar2);
|
|
}
|
|
}
|
|
else {
|
|
lVar5 = 5;
|
|
psVar6 = param_2;
|
|
psVar9 = &DAT_14011ca88;
|
|
do {
|
|
if (lVar5 == 0) break;
|
|
lVar5 = lVar5 + -1;
|
|
bVar11 = *psVar6 == *psVar9;
|
|
psVar6 = psVar6 + 1;
|
|
psVar9 = psVar9 + 1;
|
|
} while (bVar11);
|
|
if (bVar11) {
|
|
bVar11 = *(char *)(DAT_140162d68 + 0x171) == '\0';
|
|
*(bool *)(DAT_140162d68 + 0x171) = bVar11;
|
|
_Format = "Auto Revive On !!!\n";
|
|
if (!bVar11) {
|
|
_Format = "Auto Revive Off !!!\n";
|
|
}
|
|
printf(_Format);
|
|
FUN_140006940(param_1,7,param_3,(longlong)param_4);
|
|
if (*(longlong *)(DAT_1401626f8 + 0xa8) != 0) {
|
|
FUN_140008a40(*(longlong *)(DAT_1401626f8 + 0xa8));
|
|
}
|
|
}
|
|
else {
|
|
lVar5 = 9;
|
|
pwVar7 = param_2;
|
|
pwVar10 = L"serveron";
|
|
do {
|
|
if (lVar5 == 0) break;
|
|
lVar5 = lVar5 + -1;
|
|
bVar11 = *pwVar7 == *pwVar10;
|
|
pwVar7 = pwVar7 + 1;
|
|
pwVar10 = pwVar10 + 1;
|
|
} while (bVar11);
|
|
if (bVar11) {
|
|
FUN_140009890(lVar5,param_2,param_3,param_4);
|
|
}
|
|
else {
|
|
FUN_140006520(param_1,param_2,param_3,(longlong)param_4);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|