129 lines
3.6 KiB
C
129 lines
3.6 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14003ca90 FUN_14003ca90
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_14003ca90(longlong param_1)
|
|
|
|
{
|
|
undefined3 *_Src;
|
|
int iVar1;
|
|
int iVar2;
|
|
ulonglong uVar3;
|
|
longlong lVar4;
|
|
ulonglong *puVar5;
|
|
char *pcVar6;
|
|
char *pcVar7;
|
|
undefined8 *puVar8;
|
|
bool bVar9;
|
|
undefined1 auStackY_4c8 [32];
|
|
ulonglong *local_488;
|
|
undefined3 local_480;
|
|
undefined1 local_47d;
|
|
DWORD local_47c [3];
|
|
LPOVERLAPPED local_470;
|
|
undefined1 local_468 [4];
|
|
int iStack_464;
|
|
undefined1 local_460 [520];
|
|
int local_258;
|
|
int local_254;
|
|
undefined1 local_250 [512];
|
|
undefined4 local_50;
|
|
undefined4 local_48;
|
|
undefined1 uStack_44;
|
|
undefined1 local_43;
|
|
undefined4 local_40;
|
|
undefined1 uStack_3c;
|
|
undefined1 local_3b;
|
|
ulonglong local_38;
|
|
|
|
local_38 = DAT_14016f5a0 ^ (ulonglong)auStackY_4c8;
|
|
puVar8 = (undefined8 *)0x0;
|
|
if (param_1 != 0) {
|
|
puVar8 = *(undefined8 **)(param_1 + 0x58);
|
|
}
|
|
local_47c[0] = 0;
|
|
local_488 = (ulonglong *)0x0;
|
|
local_47c[1] = 0;
|
|
local_470 = (LPOVERLAPPED)0x0;
|
|
LAB_14003caf0:
|
|
do {
|
|
do {
|
|
while (GetQueuedCompletionStatus
|
|
(*(HANDLE *)(param_1 + 0x18),local_47c,(PULONG_PTR)&local_488,&local_470,
|
|
0xffffffff), puVar5 = local_488, local_47c[0] == 0) {
|
|
Ordinal_3(*local_488);
|
|
if (puVar8 != (undefined8 *)0x0) {
|
|
FUN_14003c270(puVar8,*local_488);
|
|
}
|
|
free(local_488);
|
|
}
|
|
} while ((LPOVERLAPPED)(local_488 + 7) != local_470);
|
|
memset(local_460,0,0x200);
|
|
bVar9 = true;
|
|
local_47d = 0;
|
|
_Src = (undefined3 *)puVar5[0x4d];
|
|
lVar4 = 4;
|
|
local_480 = *_Src;
|
|
pcVar6 = (char *)&local_480;
|
|
pcVar7 = "PHP";
|
|
do {
|
|
if (lVar4 == 0) break;
|
|
lVar4 = lVar4 + -1;
|
|
bVar9 = *pcVar6 == *pcVar7;
|
|
pcVar6 = pcVar6 + 1;
|
|
pcVar7 = pcVar7 + 1;
|
|
} while (bVar9);
|
|
if (!bVar9) {
|
|
memcpy(local_468,_Src,0x208);
|
|
iVar1 = iStack_464;
|
|
if (iStack_464 == 1) {
|
|
iStack_464 = 1;
|
|
memcpy(puVar5 + 0xb,local_468,0x208);
|
|
*(undefined4 *)(local_488 + 0x4c) = 0x208;
|
|
local_488[0x4d] = (ulonglong)(local_488 + 0xb);
|
|
WSASend(*local_488,local_488 + 0x4c,1,0);
|
|
puVar5 = local_488;
|
|
iVar1 = 1;
|
|
}
|
|
local_47c[1] = 0;
|
|
LAB_14003cce6:
|
|
puVar5[7] = 0;
|
|
puVar5[8] = 0;
|
|
puVar5[9] = 0;
|
|
puVar5[10] = 0;
|
|
*(undefined4 *)(local_488 + 0x4c) = 0x208;
|
|
local_488[0x4d] = (ulonglong)(local_488 + 0xb);
|
|
iVar2 = WSARecv(*local_488,local_488 + 0x4c,1);
|
|
if (iVar2 == -1) {
|
|
Ordinal_111();
|
|
}
|
|
if ((iVar1 != 0) && (puVar8 != (undefined8 *)0x0)) {
|
|
memset(local_250,0,0x200);
|
|
local_258 = 0x20c;
|
|
uVar3 = FUN_14003c4f0((longlong)puVar8,*local_488);
|
|
local_50 = (undefined4)uVar3;
|
|
local_254 = iVar1;
|
|
memcpy(local_250,local_460,0x200);
|
|
FUN_14003c950(*(longlong **)(param_1 + 8),&local_258);
|
|
}
|
|
goto LAB_14003caf0;
|
|
}
|
|
local_3b = 0;
|
|
local_43 = 0;
|
|
local_40 = *(undefined4 *)((longlong)_Src + 3);
|
|
uStack_3c = *(undefined1 *)((longlong)_Src + 7);
|
|
local_48 = *(undefined4 *)(_Src + 2);
|
|
uStack_44 = *(undefined1 *)(_Src + 3);
|
|
iVar1 = atoi((char *)&local_40);
|
|
iVar2 = atoi((char *)&local_48);
|
|
puVar5 = local_488;
|
|
if (iVar2 < 0x401) {
|
|
iStack_464 = iVar1;
|
|
memcpy(local_460,(void *)(local_488[0x4d] + 0xd),(longlong)(iVar2 + -1));
|
|
iVar1 = iStack_464;
|
|
goto LAB_14003cce6;
|
|
}
|
|
printf("API SERVER - RECEIVE PACKET ERROR (PACKET_SIZE > 1024)\n");
|
|
} while( true );
|
|
}
|
|
|