216 lines
6.9 KiB
C
216 lines
6.9 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x140004960 FUN_140004960
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined8 FUN_140004960(longlong param_1)
|
|
|
|
{
|
|
undefined1 uVar1;
|
|
longlong *plVar2;
|
|
longlong lVar3;
|
|
uint uVar4;
|
|
ushort uVar5;
|
|
int iVar6;
|
|
int iVar7;
|
|
longlong lVar8;
|
|
longlong lVar9;
|
|
ulonglong uVar10;
|
|
ulonglong uVar11;
|
|
undefined **ppuVar12;
|
|
longlong lVar13;
|
|
undefined1 auStack_e8 [32];
|
|
undefined8 local_c8;
|
|
undefined8 local_c0;
|
|
undefined8 local_b8;
|
|
undefined8 local_b0;
|
|
undefined8 local_a8;
|
|
undefined8 local_a0;
|
|
undefined8 local_98;
|
|
undefined8 local_90;
|
|
undefined8 local_88;
|
|
undefined8 local_80;
|
|
undefined4 local_78;
|
|
undefined8 local_68;
|
|
undefined1 local_60;
|
|
undefined7 uStack_5f;
|
|
undefined8 local_50;
|
|
ulonglong local_48;
|
|
ulonglong local_38;
|
|
|
|
local_68 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_e8;
|
|
iVar6 = _kbhit();
|
|
if (iVar6 != 0) {
|
|
lVar13 = 0;
|
|
do {
|
|
iVar6 = _getch();
|
|
iVar6 = (int)(char)iVar6;
|
|
if (*(int *)(param_1 + 0x40) == 0) {
|
|
iVar7 = toupper(iVar6);
|
|
switch(iVar7) {
|
|
case 0x45:
|
|
DAT_1401bcf14 = 1;
|
|
printf("%s\n");
|
|
return 0;
|
|
case 0x46:
|
|
DAT_1401bcf10 = 1;
|
|
printf("%s\n");
|
|
break;
|
|
default:
|
|
printf("........... Message : Unknown Control Command.\n");
|
|
break;
|
|
case 0x4c:
|
|
*(undefined4 *)(param_1 + 0x40) = 1;
|
|
printf("%s\n");
|
|
break;
|
|
case 0x4d:
|
|
FUN_140062910(DAT_1401bd020);
|
|
lVar9 = DAT_1401bd020;
|
|
if (*(longlong *)(param_1 + 0x30) != 0) {
|
|
*(undefined1 *)(*(longlong *)(param_1 + 0x30) + 0x18) =
|
|
*(undefined1 *)(DAT_1401bd020 + 0x16);
|
|
}
|
|
uVar4 = DAT_1401bcf24;
|
|
plVar2 = *(longlong **)(param_1 + 0x60);
|
|
uVar11 = (ulonglong)DAT_1401bcf24;
|
|
if ((plVar2 != (longlong *)0x0) &&
|
|
(uVar1 = *(undefined1 *)(lVar9 + 8), lVar8 = lVar13, uVar10 = uVar11,
|
|
0 < (int)DAT_1401bcf24)) {
|
|
do {
|
|
lVar3 = *plVar2;
|
|
if (*(longlong *)(lVar8 + lVar3) != 0) {
|
|
*(undefined1 *)(*(longlong *)(lVar8 + lVar3) + 0x18) = uVar1;
|
|
}
|
|
uVar10 = uVar10 - 1;
|
|
lVar8 = lVar8 + 8;
|
|
} while (uVar10 != 0);
|
|
}
|
|
plVar2 = *(longlong **)(param_1 + 0x68);
|
|
if ((plVar2 != (longlong *)0x0) &&
|
|
(uVar1 = *(undefined1 *)(lVar9 + 9), lVar8 = lVar13, uVar10 = uVar11, 0 < (int)uVar4))
|
|
{
|
|
do {
|
|
lVar3 = *plVar2;
|
|
if (*(longlong *)(lVar8 + lVar3) != 0) {
|
|
*(undefined1 *)(*(longlong *)(lVar8 + lVar3) + 0x18) = uVar1;
|
|
}
|
|
uVar10 = uVar10 - 1;
|
|
lVar8 = lVar8 + 8;
|
|
} while (uVar10 != 0);
|
|
}
|
|
plVar2 = *(longlong **)(param_1 + 0x70);
|
|
if ((plVar2 != (longlong *)0x0) &&
|
|
(uVar1 = *(undefined1 *)(lVar9 + 10), lVar8 = lVar13, uVar10 = uVar11, 0 < (int)uVar4))
|
|
{
|
|
do {
|
|
lVar3 = *plVar2;
|
|
if (*(longlong *)(lVar8 + lVar3) != 0) {
|
|
*(undefined1 *)(*(longlong *)(lVar8 + lVar3) + 0x18) = uVar1;
|
|
}
|
|
uVar10 = uVar10 - 1;
|
|
lVar8 = lVar8 + 8;
|
|
} while (uVar10 != 0);
|
|
}
|
|
plVar2 = *(longlong **)(param_1 + 0x78);
|
|
if ((plVar2 != (longlong *)0x0) &&
|
|
(uVar1 = *(undefined1 *)(lVar9 + 0xb), lVar9 = lVar13, 0 < (int)uVar4)) {
|
|
do {
|
|
lVar8 = *plVar2;
|
|
if (*(longlong *)(lVar8 + lVar9) != 0) {
|
|
*(undefined1 *)(*(longlong *)(lVar8 + lVar9) + 0x18) = uVar1;
|
|
}
|
|
uVar11 = uVar11 - 1;
|
|
lVar9 = lVar9 + 8;
|
|
} while (uVar11 != 0);
|
|
}
|
|
printf("%s\n");
|
|
break;
|
|
case 0x50:
|
|
lVar9 = *(longlong *)(param_1 + 0x58);
|
|
if (lVar9 != 0) {
|
|
local_88 = 0;
|
|
local_c0 = 0;
|
|
local_c8 = 0;
|
|
local_b0 = 0;
|
|
local_b8 = 0;
|
|
local_90 = 0;
|
|
local_98 = 0;
|
|
local_a0 = 0;
|
|
local_a8 = 0;
|
|
local_80 = 0;
|
|
local_78 = 0;
|
|
if (*(longlong *)(lVar9 + 0x40) != 0) {
|
|
(**(code **)(**(longlong **)(lVar9 + 0x40) + 0xb0))
|
|
(*(longlong **)(lVar9 + 0x40),&local_c8);
|
|
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");
|
|
}
|
|
}
|
|
printf("%s\n");
|
|
break;
|
|
case 0x52:
|
|
DAT_1401bcf18 = (uint)(DAT_1401bcf18 == 0);
|
|
printf("%s %s\n");
|
|
break;
|
|
case 0x54:
|
|
DAT_1401bcf0f = DAT_1401bcf0f == '\0';
|
|
printf("%s %s\n");
|
|
break;
|
|
case 0x56:
|
|
if ((DAT_1401bd4f4 & 1) == 0) {
|
|
DAT_1401bd4f4 = DAT_1401bd4f4 | 1;
|
|
FUN_14011b100();
|
|
atexit((_func_5014 *)&LAB_14012f3d0);
|
|
}
|
|
FUN_140119840();
|
|
printf("%s\n");
|
|
}
|
|
}
|
|
else {
|
|
iVar7 = toupper(iVar6);
|
|
if (iVar7 == 0x55) {
|
|
*(undefined4 *)(param_1 + 0x40) = 0;
|
|
printf("%s\n");
|
|
ppuVar12 = &PTR_s_Server_Shutdown__1401b3458;
|
|
do {
|
|
uVar5 = GetAsyncKeyState(0xa0);
|
|
if (((uVar5 & 0x8001) != 0) || (*(char *)(ppuVar12 + 1) == '\0')) {
|
|
printf(" \'%c\'\t: %s\n");
|
|
}
|
|
ppuVar12 = ppuVar12 + 3;
|
|
} while ((longlong)ppuVar12 < 0x1401b3548);
|
|
}
|
|
}
|
|
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");
|
|
FUN_140118c70((ulonglong *)&local_60);
|
|
printf("PROTOCOL : %s\n");
|
|
if (0xf < local_48) {
|
|
operator_delete((void *)CONCAT71(uStack_5f,local_60));
|
|
}
|
|
local_48 = 0xf;
|
|
local_50 = 0;
|
|
local_60 = 0;
|
|
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
|
|
}
|
|
iVar6 = _kbhit();
|
|
} while (iVar6 != 0);
|
|
}
|
|
return 2;
|
|
}
|
|
|