298 lines
10 KiB
C
298 lines
10 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x140003420 FUN_140003420
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined8
|
|
FUN_140003420(longlong param_1,ulonglong *******param_2,undefined *param_3,undefined2 *param_4)
|
|
|
|
{
|
|
longlong lVar1;
|
|
ulonglong ***********pppppppppppuVar2;
|
|
ushort uVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
ulonglong ************ppppppppppppuVar6;
|
|
ulonglong ************ppppppppppppuVar7;
|
|
undefined **ppuVar8;
|
|
bool bVar9;
|
|
undefined1 auStack_1e8 [32];
|
|
undefined8 local_1c8;
|
|
undefined8 local_1c0;
|
|
undefined8 local_1b8;
|
|
undefined8 local_1b0;
|
|
undefined8 local_1a8;
|
|
undefined8 local_1a0;
|
|
undefined8 local_198;
|
|
undefined8 local_190;
|
|
undefined8 local_188;
|
|
undefined8 local_180;
|
|
undefined4 local_178;
|
|
undefined8 local_168;
|
|
ulonglong ***********local_160;
|
|
ulonglong ************local_158;
|
|
undefined8 local_150;
|
|
ulonglong local_148;
|
|
undefined4 local_138;
|
|
uint local_134;
|
|
byte local_12c;
|
|
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;
|
|
void *local_60;
|
|
undefined8 local_58;
|
|
undefined8 local_50;
|
|
ulonglong local_38;
|
|
|
|
local_168 = 0xfffffffffffffffe;
|
|
local_38 = DAT_14016f5a0 ^ (ulonglong)auStack_1e8;
|
|
iVar4 = _kbhit();
|
|
while (iVar4 != 0) {
|
|
iVar4 = _getch();
|
|
iVar4 = (int)(char)iVar4;
|
|
if (*(int *)(param_1 + 0x49428) == 0) {
|
|
iVar5 = toupper(iVar4);
|
|
switch(iVar5) {
|
|
case 0x30:
|
|
local_160 = (ulonglong ***********)0x0;
|
|
local_158 = (ulonglong ************)0x0;
|
|
local_150 = 0;
|
|
param_2 = (ulonglong *******)&local_160;
|
|
FUN_1400398e0(DAT_14017cf20,(ulonglong *)param_2);
|
|
ppppppppppppuVar6 = local_158;
|
|
pppppppppppuVar2 = local_160;
|
|
for (ppppppppppppuVar7 = (ulonglong ************)local_160;
|
|
ppppppppppppuVar7 != ppppppppppppuVar6; ppppppppppppuVar7 = ppppppppppppuVar7 + 0x1f) {
|
|
FUN_140003c50(&local_138,(undefined4 *)ppppppppppppuVar7);
|
|
param_4 = &local_c0;
|
|
if (7 < local_a8) {
|
|
param_4 = (undefined2 *)CONCAT62(uStack_be,local_c0);
|
|
}
|
|
param_3 = (undefined *)(ulonglong)local_12c;
|
|
param_2 = (ulonglong *******)(ulonglong)local_134;
|
|
wprintf(L" CODE:[ %d ]\tTYPE:[ %d ]\tNAME:[ %s ] \r\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;
|
|
}
|
|
if (pppppppppppuVar2 != (ulonglong ************)0x0) {
|
|
FUN_140004ba0((ulonglong *)pppppppppppuVar2,(ulonglong *)ppppppppppppuVar6);
|
|
operator_delete(pppppppppppuVar2);
|
|
param_2 = (ulonglong *******)ppppppppppppuVar6;
|
|
}
|
|
FUN_140033b40(DAT_14017cf28);
|
|
break;
|
|
case 0x31:
|
|
bVar9 = *(char *)(DAT_14017cf28 + 0x164) == '\0';
|
|
*(bool *)(DAT_14017cf28 + 0x164) = bVar9;
|
|
if (bVar9) {
|
|
printf("Print On !!!\n");
|
|
}
|
|
else {
|
|
printf("Print Off !!!\n");
|
|
}
|
|
break;
|
|
case 0x32:
|
|
FUN_14000bd40(*(longlong *)(param_1 + 0x49468),param_2,param_3,param_4);
|
|
param_2 = (ulonglong *******)PTR_s_CreateBackupTable_140174e90;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x33:
|
|
bVar9 = *(char *)(DAT_14017cf28 + 0x180) == '\0';
|
|
*(bool *)(DAT_14017cf28 + 0x180) = bVar9;
|
|
param_2 = (ulonglong *******)(ulonglong)bVar9;
|
|
printf("Active : %d\n");
|
|
break;
|
|
case 0x34:
|
|
FUN_140009240(*(longlong *)(param_1 + 0x49460),param_2,param_3,(longlong)param_4);
|
|
param_2 = (ulonglong *******)PTR_s_Server_File_Refresh__140174ec0;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x35:
|
|
FUN_140008410(*(longlong *)(param_1 + 0x49460),param_2,param_3,param_4);
|
|
param_2 = (ulonglong *******)PTR_s_Server_Option_Refresh__140174ed8;
|
|
printf("%s\n");
|
|
break;
|
|
default:
|
|
ppuVar8 = &PTR_s_Printf_On_Off__140174e78;
|
|
do {
|
|
uVar3 = GetAsyncKeyState(0xa0);
|
|
if (((uVar3 & 0x8001) != 0) || (*(char *)(ppuVar8 + 1) == '\0')) {
|
|
param_3 = *ppuVar8;
|
|
param_2 = (ulonglong *******)(ulonglong)(uint)(int)*(char *)(ppuVar8 + -1);
|
|
printf(" \'%c\'\t: %s\n");
|
|
}
|
|
ppuVar8 = ppuVar8 + 3;
|
|
} while ((longlong)ppuVar8 < 0x140175028);
|
|
printf("........... Message : Unknown Control Command.\n");
|
|
break;
|
|
case 0x37:
|
|
FUN_140009760(*(longlong *)(param_1 + 0x49460),param_2,param_3,param_4);
|
|
param_2 = (ulonglong *******)PTR_s_Server_RealTime_Event__140174ef0;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x38:
|
|
param_2 = (ulonglong *******)(ulonglong)*(uint *)(DAT_14017cf20 + 0x58);
|
|
printf("[AgentCount : %d] \n");
|
|
break;
|
|
case 0x39:
|
|
FUN_14000c120(DAT_14017cf48);
|
|
param_2 = (ulonglong *******)PTR_s_Statistics_Print__140174f20;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x45:
|
|
*(undefined1 *)(param_1 + 0x49440) = 0;
|
|
printf("Server Shutdown\n");
|
|
return 0;
|
|
case 0x46:
|
|
wprintf(L"-AGENT MANAGER SERVER [CODE:%d]---------------------------------\n");
|
|
wprintf(L"PUBLIC NETWORK : ADDRESS[ %s ] PORT[ %d ]\n");
|
|
wprintf(L"PRIVATE NETWORK : ADDRESS[ %s ] PORT[ %d ]\n");
|
|
param_3 = (undefined *)(ulonglong)*(uint *)(*(longlong *)(param_1 + 0x49448) + 0x50);
|
|
printf("API NETWORK : ADDRESS[ %s ] PORT[ %d ] \n");
|
|
wprintf(
|
|
L"\n-SESSION----------------------------------------------------------------------\n"
|
|
);
|
|
wprintf(L"%s \n");
|
|
param_2 = (ulonglong *******)(*(longlong *)(param_1 + 0x49468) + 0x28);
|
|
if (7 < *(ulonglong *)(*(longlong *)(param_1 + 0x49468) + 0x40)) {
|
|
param_2 = (ulonglong *******)*param_2;
|
|
}
|
|
wprintf(L"%s \n");
|
|
wprintf(
|
|
L"\n------------------------------------------------------------------------------\n\n"
|
|
);
|
|
break;
|
|
case 0x4c:
|
|
*(undefined4 *)(param_1 + 0x49428) = 1;
|
|
param_3 = &DAT_14012eca4;
|
|
param_2 = (ulonglong *******)PTR_s_Keyboard_Locked_140174f80;
|
|
printf("%s %s\n");
|
|
break;
|
|
case 0x4d:
|
|
FUN_140038530(DAT_14017cf10);
|
|
param_2 = (ulonglong *******)PTR_s_CustomOption_Init_140175010;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x50:
|
|
lVar1 = *(longlong *)(param_1 + 0x49450);
|
|
if (lVar1 != 0) {
|
|
local_188 = 0;
|
|
local_1c0 = 0;
|
|
local_1c8 = 0;
|
|
local_1b0 = 0;
|
|
local_1b8 = 0;
|
|
local_190 = 0;
|
|
local_198 = 0;
|
|
local_1a0 = 0;
|
|
local_1a8 = 0;
|
|
local_180 = 0;
|
|
local_178 = 0;
|
|
if (*(longlong *)(lVar1 + 0x28) != 0) {
|
|
(**(code **)(**(longlong **)(lVar1 + 0x28) + 0xb0))
|
|
(*(longlong **)(lVar1 + 0x28),&local_1c8);
|
|
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_140174f98;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x52:
|
|
DAT_14017ce78 = (uint)(DAT_14017ce78 == 0);
|
|
param_3 = &DAT_14012eca8;
|
|
if (DAT_14017ce78 != 0) {
|
|
param_3 = &DAT_14012eca4;
|
|
}
|
|
param_2 = (ulonglong *******)PTR_s_ShowFPS_140174fb0;
|
|
printf("%s %s\n");
|
|
break;
|
|
case 0x54:
|
|
DAT_14017ce84 = DAT_14017ce84 == '\0';
|
|
param_2 = (ulonglong *******)(ulonglong)(byte)DAT_14017ce84;
|
|
printf("Connect : [%d]\n");
|
|
}
|
|
}
|
|
else {
|
|
iVar5 = toupper(iVar4);
|
|
if (iVar5 == 0x55) {
|
|
*(undefined4 *)(param_1 + 0x49428) = 0;
|
|
param_3 = &DAT_14012eca8;
|
|
param_2 = (ulonglong *******)PTR_s_Keyboard_UnLocked_140174fc8;
|
|
printf("%s %s\n");
|
|
ppuVar8 = &PTR_s_Printf_On_Off__140174e78;
|
|
do {
|
|
uVar3 = GetAsyncKeyState(0xa0);
|
|
if (((uVar3 & 0x8001) != 0) || (*(char *)(ppuVar8 + 1) == '\0')) {
|
|
param_3 = *ppuVar8;
|
|
param_2 = (ulonglong *******)(ulonglong)(uint)(int)*(char *)(ppuVar8 + -1);
|
|
printf(" \'%c\'\t: %s\n");
|
|
}
|
|
ppuVar8 = ppuVar8 + 3;
|
|
} while ((longlong)ppuVar8 < 0x140175028);
|
|
}
|
|
}
|
|
iVar4 = toupper(iVar4);
|
|
if (iVar4 == 0x49) {
|
|
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
|
|
GetCurrentProcessId();
|
|
printf("ProcessID : %d\n");
|
|
printf("SVN : %d\n");
|
|
printf("Resource : %d\n");
|
|
printf("Build Date : %s\n");
|
|
param_2 = (ulonglong *******)FUN_1400ed8a0((ulonglong *)&local_160);
|
|
if ((ulonglong ***********)0xf < param_2[3]) {
|
|
param_2 = (ulonglong *******)*param_2;
|
|
}
|
|
printf("PROTOCOL : %s\n");
|
|
if (0xf < local_148) {
|
|
operator_delete(local_160);
|
|
}
|
|
local_148 = 0xf;
|
|
local_150 = 0;
|
|
local_160 = (ulonglong ***********)((ulonglong)local_160 & 0xffffffffffffff00);
|
|
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
|
|
}
|
|
iVar4 = _kbhit();
|
|
}
|
|
return 2;
|
|
}
|
|
|