417 lines
14 KiB
C
417 lines
14 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x140003f30 FUN_140003f30
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined8 FUN_140003f30(longlong param_1,ulonglong *param_2,undefined2 *param_3,uint *param_4)
|
|
|
|
{
|
|
byte bVar1;
|
|
longlong lVar2;
|
|
ulonglong *puVar3;
|
|
ulonglong *puVar4;
|
|
ushort uVar5;
|
|
int iVar6;
|
|
int iVar7;
|
|
BOOL BVar8;
|
|
HANDLE hProcess;
|
|
undefined2 *puVar9;
|
|
char *pcVar10;
|
|
longlong *plVar11;
|
|
wchar_t *_Format;
|
|
ulonglong *puVar12;
|
|
undefined **ppuVar13;
|
|
undefined2 *puVar14;
|
|
bool bVar15;
|
|
undefined1 auStack_2f8 [32];
|
|
DWORD local_2d8 [2];
|
|
uint local_2d0 [2];
|
|
undefined8 local_2c8;
|
|
undefined8 local_2c0;
|
|
undefined8 local_2b8;
|
|
undefined8 local_2b0;
|
|
undefined8 local_2a8;
|
|
undefined8 local_2a0;
|
|
undefined8 local_298;
|
|
undefined8 local_290;
|
|
undefined8 local_288;
|
|
undefined8 local_280;
|
|
undefined4 local_278;
|
|
undefined8 local_268;
|
|
ulonglong *local_260;
|
|
ulonglong *local_258;
|
|
undefined8 local_250;
|
|
ulonglong local_248;
|
|
undefined4 local_238 [10];
|
|
void *local_210;
|
|
ulonglong local_1f8;
|
|
undefined2 local_1e8;
|
|
undefined6 uStack_1e6;
|
|
undefined8 local_1d8;
|
|
ulonglong local_1d0;
|
|
undefined2 local_1c0;
|
|
undefined6 uStack_1be;
|
|
undefined8 local_1b0;
|
|
ulonglong local_1a8;
|
|
undefined4 local_198;
|
|
uint local_194;
|
|
void *local_160;
|
|
undefined8 local_158;
|
|
undefined8 local_150;
|
|
undefined4 local_138 [10];
|
|
undefined2 local_110;
|
|
undefined6 uStack_10e;
|
|
undefined8 local_100;
|
|
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;
|
|
int local_74;
|
|
void *local_60;
|
|
undefined8 local_58;
|
|
undefined8 local_50;
|
|
ulonglong local_38;
|
|
|
|
local_268 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401555a0 ^ (ulonglong)auStack_2f8;
|
|
iVar6 = _kbhit();
|
|
if (iVar6 != 0) {
|
|
puVar14 = (undefined2 *)0x0;
|
|
do {
|
|
iVar6 = _getch();
|
|
iVar6 = (int)(char)iVar6;
|
|
if (*(char *)(param_1 + 0x48) != '\0') {
|
|
iVar7 = toupper(iVar6);
|
|
if (iVar7 == 0x55) {
|
|
printf("Keyboard UnLocked\n");
|
|
*(undefined1 *)(param_1 + 0x48) = 0;
|
|
ppuVar13 = &PTR_s_Server_Shutdown__14015aee8;
|
|
do {
|
|
uVar5 = GetAsyncKeyState(0xa0);
|
|
if (((uVar5 & 0x8001) != 0) || (*(char *)(ppuVar13 + 1) == '\0')) {
|
|
param_3 = (undefined2 *)*ppuVar13;
|
|
param_2 = (ulonglong *)(ulonglong)(uint)(int)*(char *)(ppuVar13 + -1);
|
|
printf(" \'%c\'\t: %s\n");
|
|
}
|
|
ppuVar13 = ppuVar13 + 3;
|
|
} while ((longlong)ppuVar13 < 0x14015b050);
|
|
}
|
|
goto LAB_1400047ca;
|
|
}
|
|
iVar7 = toupper(iVar6);
|
|
switch(iVar7) {
|
|
case 0x30:
|
|
bVar15 = *(char *)(DAT_140162d68 + 0x171) == '\0';
|
|
*(bool *)(DAT_140162d68 + 0x171) = bVar15;
|
|
pcVar10 = "Auto Revive On !!!\n";
|
|
if (!bVar15) {
|
|
pcVar10 = "Auto Revive Off !!!\n";
|
|
}
|
|
printf(pcVar10);
|
|
param_2 = (ulonglong *)0x7;
|
|
FUN_140006940(*(longlong *)(param_1 + 0xa0),7,param_3,(longlong)param_4);
|
|
break;
|
|
case 0x31:
|
|
pcVar10 = "All Server On. \n";
|
|
printf("All Server On. \n");
|
|
FUN_140009890(pcVar10,param_2,param_3,param_4);
|
|
param_2 = (ulonglong *)PTR_s_All_Server_On__14015afa8;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x32:
|
|
pcVar10 = "Disconnect Server On. \n";
|
|
printf("Disconnect Server On. \n");
|
|
FUN_140009bd0(pcVar10,param_2,param_3,param_4);
|
|
param_2 = (ulonglong *)PTR_s_Disconnect_Server_On__14015afc0;
|
|
printf("%s\n");
|
|
break;
|
|
default:
|
|
printf("........... Message : Unknown Control Command.\n");
|
|
break;
|
|
case 0x35:
|
|
local_260 = (ulonglong *)0x0;
|
|
local_258 = (ulonglong *)0x0;
|
|
local_250 = 0;
|
|
FUN_14002ce60(DAT_140162d60,(ulonglong *)&local_260);
|
|
puVar4 = local_258;
|
|
puVar3 = local_260;
|
|
param_2 = (ulonglong *)PTR_s_All_Server_Down__14015afd8;
|
|
for (puVar12 = local_260; PTR_s_All_Server_Down__14015afd8 = (undefined *)param_2,
|
|
puVar12 != puVar4; puVar12 = puVar12 + 0x1f) {
|
|
FUN_140004950(local_238,(undefined4 *)puVar12);
|
|
local_2d0[0] = 1;
|
|
plVar11 = (longlong *)(*(longlong *)(param_1 + 0xa0) + 0x50);
|
|
param_4 = local_2d0;
|
|
param_3 = (undefined2 *)&DAT_1401555d0;
|
|
(**(code **)(*plVar11 + 0x40))(plVar11,local_198);
|
|
if (local_160 != (void *)0x0) {
|
|
operator_delete(local_160);
|
|
}
|
|
local_160 = (void *)0x0;
|
|
local_158 = 0;
|
|
local_150 = 0;
|
|
if (7 < local_1a8) {
|
|
operator_delete((void *)CONCAT62(uStack_1be,local_1c0));
|
|
}
|
|
local_1a8 = 7;
|
|
local_1b0 = 0;
|
|
local_1c0 = 0;
|
|
if (7 < local_1d0) {
|
|
operator_delete((void *)CONCAT62(uStack_1e6,local_1e8));
|
|
}
|
|
local_1d0 = 7;
|
|
local_1d8 = 0;
|
|
local_1e8 = 0;
|
|
if (7 < local_1f8) {
|
|
operator_delete(local_210);
|
|
}
|
|
param_2 = (ulonglong *)PTR_s_All_Server_Down__14015afd8;
|
|
}
|
|
if (puVar3 != (ulonglong *)0x0) {
|
|
FUN_140004b30(puVar3,puVar4);
|
|
operator_delete(puVar3);
|
|
param_2 = (ulonglong *)PTR_s_All_Server_Down__14015afd8;
|
|
}
|
|
goto LAB_140004442;
|
|
case 0x38:
|
|
local_260 = (ulonglong *)0x0;
|
|
local_258 = (ulonglong *)0x0;
|
|
local_250 = 0;
|
|
FUN_14002ce60(DAT_140162d60,(ulonglong *)&local_260);
|
|
puVar4 = local_258;
|
|
puVar3 = local_260;
|
|
for (puVar12 = local_260; puVar12 != puVar4; puVar12 = puVar12 + 0x1f) {
|
|
FUN_140004950(local_138,(undefined4 *)puVar12);
|
|
if (local_74 == 0) {
|
|
_Format = L"OFF - ";
|
|
LAB_1400044dc:
|
|
wprintf(_Format);
|
|
}
|
|
else {
|
|
if (local_74 == 1) {
|
|
_Format = L"LOAD - ";
|
|
goto LAB_1400044dc;
|
|
}
|
|
if (local_74 == 2) {
|
|
_Format = L"BAD - ";
|
|
goto LAB_1400044dc;
|
|
}
|
|
if (local_74 == 3) {
|
|
_Format = L"GOOD - ";
|
|
goto LAB_1400044dc;
|
|
}
|
|
}
|
|
param_3 = &local_c0;
|
|
if (7 < local_a8) {
|
|
param_3 = (undefined2 *)CONCAT62(uStack_be,local_c0);
|
|
}
|
|
wprintf(L"\tCODE:[ %d ]\tNAME:[ %s ] \n");
|
|
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((void *)CONCAT62(uStack_10e,local_110));
|
|
}
|
|
local_f8 = 7;
|
|
local_100 = 0;
|
|
local_110 = 0;
|
|
}
|
|
wprintf(L"ConnectServer Count : [ %d ] \n");
|
|
param_2 = (ulonglong *)PTR_s_Server_Information__14015aff0;
|
|
if (puVar3 != (ulonglong *)0x0) {
|
|
FUN_140004b30(puVar3,puVar4);
|
|
operator_delete(puVar3);
|
|
param_2 = (ulonglong *)PTR_s_Server_Information__14015aff0;
|
|
}
|
|
LAB_140004442:
|
|
printf("%s\n");
|
|
break;
|
|
case 0x39:
|
|
local_260 = (ulonglong *)0x0;
|
|
local_258 = (ulonglong *)0x0;
|
|
local_250 = 0;
|
|
FUN_14002ce60(DAT_140162d60,(ulonglong *)&local_260);
|
|
puVar4 = local_258;
|
|
puVar3 = local_260;
|
|
for (puVar12 = local_260; puVar12 != puVar4; puVar12 = puVar12 + 0x1f) {
|
|
FUN_140004950(local_238,(undefined4 *)puVar12);
|
|
param_3 = (undefined2 *)(ulonglong)local_194;
|
|
hProcess = OpenProcess(0x1f0fff,0,local_194);
|
|
if (hProcess != (HANDLE)0x0) {
|
|
BVar8 = GetExitCodeProcess(hProcess,local_2d8);
|
|
if ((BVar8 != 0) && (local_2d8[0] == 0x103)) {
|
|
TerminateProcess(hProcess,0);
|
|
}
|
|
CloseHandle(hProcess);
|
|
}
|
|
if (local_160 != (void *)0x0) {
|
|
operator_delete(local_160);
|
|
}
|
|
local_160 = (void *)0x0;
|
|
local_158 = 0;
|
|
local_150 = 0;
|
|
if (7 < local_1a8) {
|
|
operator_delete((void *)CONCAT62(uStack_1be,local_1c0));
|
|
}
|
|
local_1a8 = 7;
|
|
local_1b0 = 0;
|
|
local_1c0 = 0;
|
|
if (7 < local_1d0) {
|
|
operator_delete((void *)CONCAT62(uStack_1e6,local_1e8));
|
|
}
|
|
local_1d0 = 7;
|
|
local_1d8 = 0;
|
|
local_1e8 = 0;
|
|
if (7 < local_1f8) {
|
|
operator_delete(local_210);
|
|
}
|
|
}
|
|
if (puVar3 != (ulonglong *)0x0) {
|
|
FUN_140004b30(puVar3,puVar4);
|
|
operator_delete(puVar3);
|
|
}
|
|
param_2 = (ulonglong *)PTR_s_All_Server_Kill__14015b008;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x45:
|
|
*(undefined1 *)(param_1 + 0x60) = 0;
|
|
printf("%s\n");
|
|
return 0;
|
|
case 0x46:
|
|
wprintf(L"-AGENT SERVER [CODE:%d]---------------------------------\n");
|
|
param_3 = (undefined2 *)(ulonglong)*(uint *)(*(longlong *)(param_1 + 0xa0) + 0x38);
|
|
wprintf(L"PRIVATE NETWORK : ADDRESS[ %s ] PORT[ %d ]\n");
|
|
FUN_140001bf0(param_1 + 8);
|
|
param_2 = (ulonglong *)PTR_s_Server_Info__14015af30;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x4c:
|
|
*(undefined1 *)(param_1 + 0x48) = 1;
|
|
param_2 = (ulonglong *)PTR_s_Keyboard_Locked__14015af00;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x4d:
|
|
FUN_14002b820(DAT_140162d48);
|
|
lVar2 = *(longlong *)(param_1 + 0xa8);
|
|
if (lVar2 != 0) {
|
|
bVar1 = *(byte *)(DAT_140162d48 + 0x17);
|
|
param_4 = (uint *)(ulonglong)bVar1;
|
|
puVar9 = puVar14;
|
|
param_3 = puVar14;
|
|
if (*(longlong *)(lVar2 + 0x10) - *(longlong *)(lVar2 + 8) >> 3 != 0) {
|
|
do {
|
|
*(byte *)(*(longlong *)(*(longlong *)(lVar2 + 8) + (longlong)puVar9) + 0x18) = bVar1;
|
|
param_3 = (undefined2 *)(ulonglong)((int)param_3 + 1);
|
|
puVar9 = puVar9 + 4;
|
|
} while (param_3 < (undefined2 *)
|
|
(*(longlong *)(lVar2 + 0x10) - *(longlong *)(lVar2 + 8) >> 3));
|
|
}
|
|
}
|
|
param_2 = (ulonglong *)PTR_s_CustomOption_Init__14015af90;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x50:
|
|
lVar2 = *(longlong *)(param_1 + 0xa0);
|
|
if (lVar2 != 0) {
|
|
local_288 = 0;
|
|
local_2c0 = 0;
|
|
local_2c8 = 0;
|
|
local_2b0 = 0;
|
|
local_2b8 = 0;
|
|
local_290 = 0;
|
|
local_298 = 0;
|
|
local_2a0 = 0;
|
|
local_2a8 = 0;
|
|
local_280 = 0;
|
|
local_278 = 0;
|
|
if (*(longlong *)(lVar2 + 0x28) != 0) {
|
|
(**(code **)(**(longlong **)(lVar2 + 0x28) + 0xb0))
|
|
(*(longlong **)(lVar2 + 0x28),&local_2c8);
|
|
printf("--------------------------------------------------\n");
|
|
printf("%I64d totalTcpReceiveCount\n");
|
|
printf("%I64d totalTcpReceiveBytes\n");
|
|
printf("%I64d totalTcpSendCount\n");
|
|
printf("%I64d totalTcpSendBytes\n");
|
|
printf("%d p2pConnectionPairCount\n");
|
|
printf("%d p2pDirectConnectionPairCount\n");
|
|
printf("%d clientCount\n");
|
|
printf("--------------------------------------------------\n");
|
|
}
|
|
}
|
|
param_2 = (ulonglong *)PTR_s_Network_Status__14015af48;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x52:
|
|
DAT_140162cc4 = (uint)(DAT_140162cc4 == 0);
|
|
param_3 = (undefined2 *)&DAT_14011b9ac;
|
|
if (DAT_140162cc4 != 0) {
|
|
param_3 = (undefined2 *)&DAT_14011b9a8;
|
|
}
|
|
param_2 = (ulonglong *)PTR_s_ShowFPS__14015af60;
|
|
printf("%s %s\n");
|
|
break;
|
|
case 0x54:
|
|
printf("RetryConnectSession\n");
|
|
iVar7 = (int)(*(longlong *)(param_1 + 0x20) - *(longlong *)(param_1 + 0x18) >> 3);
|
|
puVar9 = puVar14;
|
|
if (0 < iVar7) {
|
|
do {
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x18) + (longlong)puVar9 * 8) != 0) {
|
|
*(undefined1 *)
|
|
(*(longlong *)(*(longlong *)(param_1 + 0x18) + (longlong)puVar9 * 8) + 0x1c) = 1;
|
|
}
|
|
puVar9 = (undefined2 *)((longlong)puVar9 + 1);
|
|
} while ((longlong)puVar9 < (longlong)iVar7);
|
|
}
|
|
param_2 = (ulonglong *)PTR_s_AgentManager_Retry__14015af18;
|
|
printf("%s\n");
|
|
}
|
|
LAB_1400047ca:
|
|
iVar6 = toupper(iVar6);
|
|
if (iVar6 == 0x49) {
|
|
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
|
|
GetCurrentProcessId();
|
|
printf("ProcessID : %d\n");
|
|
printf("SVN : %d\n");
|
|
printf("Resource : %d\n");
|
|
printf("Build Date : %s\n");
|
|
param_2 = FUN_1400dcb80((ulonglong *)&local_260);
|
|
if (0xf < param_2[3]) {
|
|
param_2 = (ulonglong *)*param_2;
|
|
}
|
|
printf("PROTOCOL : %s\n");
|
|
if (0xf < local_248) {
|
|
operator_delete(local_260);
|
|
}
|
|
local_248 = 0xf;
|
|
local_250 = 0;
|
|
local_260 = (ulonglong *)((ulonglong)local_260 & 0xffffffffffffff00);
|
|
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
|
|
}
|
|
iVar6 = _kbhit();
|
|
} while (iVar6 != 0);
|
|
}
|
|
return 2;
|
|
}
|
|
|