488 lines
15 KiB
C
488 lines
15 KiB
C
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined8 FUN_140034220(longlong param_1)
|
|
|
|
{
|
|
short sVar1;
|
|
undefined8 *puVar2;
|
|
undefined1 auVar3 [16];
|
|
undefined1 auVar4 [16];
|
|
FILE *_File;
|
|
errno_t eVar5;
|
|
ulonglong uVar6;
|
|
longlong *plVar7;
|
|
longlong *plVar8;
|
|
char *pcVar9;
|
|
ulonglong *puVar10;
|
|
char *******pppppppcVar11;
|
|
longlong *plVar12;
|
|
undefined **ppuVar13;
|
|
undefined **extraout_RAX;
|
|
longlong lVar14;
|
|
short *psVar15;
|
|
undefined2 *puVar16;
|
|
short *psVar17;
|
|
longlong *plVar18;
|
|
char *pcVar19;
|
|
uint uVar20;
|
|
bool bVar21;
|
|
undefined1 auStack_1c8 [32];
|
|
FILE *local_1a8 [2];
|
|
undefined **local_198 [5];
|
|
longlong *local_170;
|
|
undefined8 *local_160;
|
|
void *local_158;
|
|
undefined8 *local_138;
|
|
void *local_130;
|
|
char local_11c;
|
|
undefined8 local_118;
|
|
undefined2 local_110;
|
|
undefined6 uStack_10e;
|
|
undefined8 local_100;
|
|
ulonglong local_f8;
|
|
char ******local_e8 [2];
|
|
char *****local_d8;
|
|
char *****local_d0;
|
|
undefined1 local_b8;
|
|
undefined7 uStack_b7;
|
|
undefined8 local_a8;
|
|
ulonglong local_a0;
|
|
undefined2 local_78;
|
|
undefined6 uStack_76;
|
|
undefined8 local_68;
|
|
ulonglong local_60;
|
|
ulonglong local_38;
|
|
|
|
local_118 = 0xfffffffffffffffe;
|
|
local_38 = DAT_14016f5a0 ^ (ulonglong)auStack_1c8;
|
|
pcVar9 = (char *)&DAT_140175100;
|
|
if (0xf < DAT_140175118) {
|
|
pcVar9 = DAT_140175100;
|
|
}
|
|
FUN_14001f6d0(local_198,pcVar9);
|
|
DAT_140174c28 = 0;
|
|
uVar6 = FUN_14001f7a0((longlong *)local_198,(char *)(local_160 + 2));
|
|
plVar12 = (longlong *)0x0;
|
|
plVar7 = local_170;
|
|
if ((char)uVar6 == '\0') {
|
|
local_1a8[0] = operator_new(0x88);
|
|
plVar7 = plVar12;
|
|
if (local_1a8[0] != (FILE *)0x0) {
|
|
plVar7 = FUN_140020550(&local_1a8[0]->_ptr);
|
|
}
|
|
FUN_14001ed00((longlong *)local_198,plVar7);
|
|
plVar7 = local_170;
|
|
}
|
|
for (; plVar8 = plVar12, plVar7 != (longlong *)0x0; plVar7 = (longlong *)plVar7[10]) {
|
|
bVar21 = (char *)(plVar7[7] + 0x10) == (char *)0x0;
|
|
lVar14 = 7;
|
|
pcVar9 = (char *)(plVar7[7] + 0x10);
|
|
pcVar19 = "server";
|
|
do {
|
|
if (lVar14 == 0) break;
|
|
lVar14 = lVar14 + -1;
|
|
bVar21 = *pcVar9 == *pcVar19;
|
|
pcVar9 = pcVar9 + 1;
|
|
pcVar19 = pcVar19 + 1;
|
|
} while (bVar21);
|
|
if (bVar21) goto LAB_140034303;
|
|
}
|
|
LAB_140034345:
|
|
if (plVar8 == (longlong *)0x0) {
|
|
local_1a8[0] = operator_new(0xa8);
|
|
plVar8 = plVar12;
|
|
if (local_1a8[0] != (FILE *)0x0) {
|
|
plVar8 = FUN_14001ef00(&local_1a8[0]->_ptr,"server");
|
|
}
|
|
FUN_14001ed00((longlong *)local_198,plVar8);
|
|
}
|
|
for (pcVar9 = *(char **)(DAT_14017cf50 + 8); plVar7 = plVar12,
|
|
pcVar9 != *(char **)(DAT_14017cf50 + 0x10); pcVar9 = pcVar9 + 0x30) {
|
|
if (*pcVar9 == '\x18') {
|
|
plVar7 = (longlong *)(pcVar9 + 8);
|
|
if (7 < *(ulonglong *)(pcVar9 + 0x20)) {
|
|
plVar7 = *(longlong **)(pcVar9 + 8);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
local_f8 = 7;
|
|
local_100 = 0;
|
|
local_110._0_1_ = '\0';
|
|
local_110._1_1_ = 0;
|
|
uVar6 = 0xffffffffffffffff;
|
|
plVar18 = plVar7;
|
|
do {
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
lVar14 = *plVar18;
|
|
plVar18 = (longlong *)((longlong)plVar18 + 2);
|
|
} while ((short)lVar14 != 0);
|
|
FUN_140001710((ulonglong *)&local_110,plVar7,~uVar6 - 1);
|
|
FUN_1400ed7b0((ulonglong *)&local_b8,&local_110);
|
|
if (7 < local_f8) {
|
|
operator_delete((void *)CONCAT62(uStack_10e,CONCAT11(local_110._1_1_,(char)local_110)));
|
|
}
|
|
local_f8 = 7;
|
|
local_100 = 0;
|
|
local_110._0_1_ = '\0';
|
|
local_110._1_1_ = 0;
|
|
psVar15 = (short *)(param_1 + 0x30);
|
|
if (7 < *(ulonglong *)(param_1 + 0x48)) {
|
|
psVar15 = *(short **)psVar15;
|
|
}
|
|
local_d0 = (char *****)0x7;
|
|
local_d8 = (char *****)0x0;
|
|
local_e8[0] = (char ******)((ulonglong)local_e8[0] & 0xffffffffffff0000);
|
|
uVar6 = 0xffffffffffffffff;
|
|
psVar17 = psVar15;
|
|
do {
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
sVar1 = *psVar17;
|
|
psVar17 = psVar17 + 1;
|
|
} while (sVar1 != 0);
|
|
FUN_140001710((ulonglong *)local_e8,psVar15,~uVar6 - 1);
|
|
puVar10 = FUN_1400ed7b0((ulonglong *)&local_78,(LPCWSTR)local_e8);
|
|
if (0xf < puVar10[3]) {
|
|
puVar10 = (ulonglong *)*puVar10;
|
|
}
|
|
FUN_14001f130(plVar8,"ip",(char *)puVar10);
|
|
if (0xf < local_60) {
|
|
operator_delete((void *)CONCAT62(uStack_76,CONCAT11(local_78._1_1_,(char)local_78)));
|
|
}
|
|
local_60 = 0xf;
|
|
local_68 = 0;
|
|
local_78._0_1_ = '\0';
|
|
if (7 < local_d0) {
|
|
operator_delete(local_e8[0]);
|
|
}
|
|
FUN_140020c20((char *)&local_78,0x40,"%d",0xc3b1);
|
|
FUN_14001f130(plVar8,"port",(char *)&local_78);
|
|
pcVar9 = &local_b8;
|
|
if (0xf < local_a0) {
|
|
pcVar9 = (char *)CONCAT71(uStack_b7,local_b8);
|
|
}
|
|
FUN_14001f130(plVar8,"file",pcVar9);
|
|
plVar7 = local_170;
|
|
if (0xf < local_a0) {
|
|
operator_delete((void *)CONCAT71(uStack_b7,local_b8));
|
|
plVar7 = local_170;
|
|
}
|
|
for (; plVar8 = plVar12, plVar7 != (longlong *)0x0; plVar7 = (longlong *)plVar7[10]) {
|
|
bVar21 = (char *)(plVar7[7] + 0x10) == (char *)0x0;
|
|
lVar14 = 8;
|
|
pcVar9 = (char *)(plVar7[7] + 0x10);
|
|
pcVar19 = "connect";
|
|
do {
|
|
if (lVar14 == 0) break;
|
|
lVar14 = lVar14 + -1;
|
|
bVar21 = *pcVar9 == *pcVar19;
|
|
pcVar9 = pcVar9 + 1;
|
|
pcVar19 = pcVar19 + 1;
|
|
} while (bVar21);
|
|
if (bVar21) goto LAB_140034543;
|
|
}
|
|
LAB_140034585:
|
|
if (plVar8 == (longlong *)0x0) {
|
|
local_1a8[0] = operator_new(0xa8);
|
|
plVar8 = plVar12;
|
|
if (local_1a8[0] != (FILE *)0x0) {
|
|
plVar8 = FUN_14001ef00(&local_1a8[0]->_ptr,"connect");
|
|
}
|
|
FUN_14001ed00((longlong *)local_198,plVar8);
|
|
}
|
|
plVar7 = plVar12;
|
|
if (*(longlong *)(param_1 + 0x1c8) != 0) {
|
|
auVar3._8_8_ = 0;
|
|
auVar3._0_8_ = *(ulonglong *)(param_1 + 0x1b0);
|
|
for (puVar2 = *(undefined8 **)
|
|
(*(longlong *)(param_1 + 0x1a8) +
|
|
SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x15)) % auVar3,0) * 8);
|
|
puVar2 != (undefined8 *)0x0; puVar2 = (undefined8 *)*puVar2) {
|
|
if (*(char *)(puVar2 + 1) == '\x15') {
|
|
if (((puVar2 != (undefined8 *)0x0) && (lVar14 = puVar2[2], lVar14 != puVar2[3])) &&
|
|
(plVar7 = (longlong *)(lVar14 + 0x30), 7 < *(ulonglong *)(lVar14 + 0x48))) {
|
|
plVar7 = *(longlong **)(lVar14 + 0x30);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
local_f8 = 7;
|
|
local_100 = 0;
|
|
local_110._0_1_ = '\0';
|
|
local_110._1_1_ = 0;
|
|
uVar6 = 0xffffffffffffffff;
|
|
plVar18 = plVar7;
|
|
do {
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
lVar14 = *plVar18;
|
|
plVar18 = (longlong *)((longlong)plVar18 + 2);
|
|
} while ((short)lVar14 != 0);
|
|
FUN_140001710((ulonglong *)&local_110,plVar7,~uVar6 - 1);
|
|
FUN_1400ed7b0((ulonglong *)&local_b8,&local_110);
|
|
if (7 < local_f8) {
|
|
operator_delete((void *)CONCAT62(uStack_10e,CONCAT11(local_110._1_1_,(char)local_110)));
|
|
}
|
|
local_f8 = 7;
|
|
local_100 = 0;
|
|
local_110._0_1_ = '\0';
|
|
local_110._1_1_ = 0;
|
|
uVar20 = 0;
|
|
if (*(longlong *)(param_1 + 0x1c8) != 0) {
|
|
auVar4._8_8_ = 0;
|
|
auVar4._0_8_ = *(ulonglong *)(param_1 + 0x1b0);
|
|
for (puVar2 = *(undefined8 **)
|
|
(*(longlong *)(param_1 + 0x1a8) +
|
|
SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x15)) % auVar4,0) * 8);
|
|
puVar2 != (undefined8 *)0x0; puVar2 = (undefined8 *)*puVar2) {
|
|
if (*(char *)(puVar2 + 1) == '\x15') {
|
|
if ((puVar2 != (undefined8 *)0x0) && (puVar2[2] != puVar2[3])) {
|
|
uVar20 = *(uint *)(puVar2[2] + 4);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pcVar9 = &local_b8;
|
|
if (0xf < local_a0) {
|
|
pcVar9 = (char *)CONCAT71(uStack_b7,local_b8);
|
|
}
|
|
FUN_14001f130(plVar8,"ip",pcVar9);
|
|
FUN_140020c20((char *)&local_78,0x40,"%d",(ulonglong)uVar20);
|
|
FUN_14001f130(plVar8,"port",(char *)&local_78);
|
|
if (0xf < local_a0) {
|
|
operator_delete((void *)CONCAT71(uStack_b7,local_b8));
|
|
}
|
|
local_f8 = 0xf;
|
|
local_100 = 0;
|
|
local_110._0_1_ = '\0';
|
|
local_d0 = (char *****)0xf;
|
|
local_d8 = (char *****)0x0;
|
|
local_e8[0] = (char ******)((ulonglong)local_e8[0] & 0xffffffffffffff00);
|
|
if (*(char *)(param_1 + 0x1e8) == '\r') {
|
|
uVar6 = 5;
|
|
pcVar9 = "agent";
|
|
LAB_140034791:
|
|
FUN_14000c9e0((ulonglong *)&local_110,pcVar9,uVar6);
|
|
puVar16 = (undefined2 *)CONCAT62(uStack_10e,CONCAT11(local_110._1_1_,(char)local_110));
|
|
if (local_f8 < 0x10) goto LAB_1400347a5;
|
|
}
|
|
else {
|
|
if (*(char *)(param_1 + 0x1e8) == '\x15') {
|
|
uVar6 = 0xc;
|
|
pcVar9 = "agentmanager";
|
|
goto LAB_140034791;
|
|
}
|
|
LAB_1400347a5:
|
|
puVar16 = &local_110;
|
|
}
|
|
plVar7 = (longlong *)FUN_14001ee20((longlong)local_198,(longlong)puVar16);
|
|
if (plVar7 == (longlong *)0x0) {
|
|
local_1a8[0] = operator_new(0xa8);
|
|
plVar7 = plVar12;
|
|
if (local_1a8[0] != (FILE *)0x0) {
|
|
pcVar9 = (char *)&local_110;
|
|
if (0xf < local_f8) {
|
|
pcVar9 = (char *)CONCAT62(uStack_10e,CONCAT11(local_110._1_1_,(char)local_110));
|
|
}
|
|
plVar7 = FUN_14001ef00(&local_1a8[0]->_ptr,pcVar9);
|
|
}
|
|
FUN_14001ed00((longlong *)local_198,plVar7);
|
|
}
|
|
for (pcVar9 = *(char **)(DAT_14017cf50 + 8); plVar8 = plVar12,
|
|
pcVar9 != *(char **)(DAT_14017cf50 + 0x10); pcVar9 = pcVar9 + 0x30) {
|
|
if (*pcVar9 == *(char *)(param_1 + 0x1e8)) {
|
|
plVar8 = (longlong *)(pcVar9 + 8);
|
|
if (7 < *(ulonglong *)(pcVar9 + 0x20)) {
|
|
plVar8 = *(longlong **)(pcVar9 + 8);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
local_60 = 7;
|
|
local_68 = 0;
|
|
local_78._0_1_ = '\0';
|
|
local_78._1_1_ = 0;
|
|
uVar6 = 0xffffffffffffffff;
|
|
plVar18 = plVar8;
|
|
do {
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
lVar14 = *plVar18;
|
|
plVar18 = (longlong *)((longlong)plVar18 + 2);
|
|
} while ((short)lVar14 != 0);
|
|
FUN_140001710((ulonglong *)&local_78,plVar8,~uVar6 - 1);
|
|
pppppppcVar11 = (char *******)FUN_1400ed7b0((ulonglong *)&local_b8,&local_78);
|
|
if (local_e8 != pppppppcVar11) {
|
|
if ((char ******)0xf < local_d0) {
|
|
operator_delete(local_e8[0]);
|
|
}
|
|
local_d0 = (char *****)0xf;
|
|
local_d8 = (char *****)0x0;
|
|
local_e8[0] = (char ******)((ulonglong)local_e8[0] & 0xffffffffffffff00);
|
|
if (pppppppcVar11[3] < (char ******)0x10) {
|
|
memmove(local_e8,pppppppcVar11,(longlong)pppppppcVar11[2] + 1);
|
|
}
|
|
else {
|
|
local_e8[0] = *pppppppcVar11;
|
|
*pppppppcVar11 = (char ******)0x0;
|
|
}
|
|
local_d8 = (char *****)pppppppcVar11[2];
|
|
local_d0 = (char *****)pppppppcVar11[3];
|
|
pppppppcVar11[3] = (char ******)0xf;
|
|
pppppppcVar11[2] = (char ******)0x0;
|
|
*(undefined1 *)pppppppcVar11 = 0;
|
|
}
|
|
if (0xf < local_a0) {
|
|
operator_delete((void *)CONCAT71(uStack_b7,local_b8));
|
|
}
|
|
local_a0 = 0xf;
|
|
local_a8 = 0;
|
|
local_b8 = '\0';
|
|
if (7 < local_60) {
|
|
operator_delete((void *)CONCAT62(uStack_76,CONCAT11(local_78._1_1_,(char)local_78)));
|
|
}
|
|
pppppppcVar11 = local_e8;
|
|
if ((char ******)0xf < local_d0) {
|
|
pppppppcVar11 = (char *******)local_e8[0];
|
|
}
|
|
FUN_14001f130(plVar7,"file",(char *)pppppppcVar11);
|
|
FUN_140020c20(&local_b8,0x40,"%d",(ulonglong)*(uint *)(param_1 + 0x154));
|
|
FUN_14001f130(plVar7,"code",&local_b8);
|
|
if ((char ******)0xf < local_d0) {
|
|
operator_delete(local_e8[0]);
|
|
}
|
|
local_d0 = (char *****)0xf;
|
|
local_d8 = (char *****)0x0;
|
|
local_e8[0] = (char ******)((ulonglong)local_e8[0] & 0xffffffffffffff00);
|
|
if (0xf < local_f8) {
|
|
operator_delete((void *)CONCAT62(uStack_10e,CONCAT11(local_110._1_1_,(char)local_110)));
|
|
}
|
|
plVar7 = local_170;
|
|
if (*(char *)(param_1 + 0x151) != '\0') {
|
|
for (; plVar8 = plVar12, plVar7 != (longlong *)0x0; plVar7 = (longlong *)plVar7[10]) {
|
|
bVar21 = (char *)(plVar7[7] + 0x10) == (char *)0x0;
|
|
lVar14 = 4;
|
|
pcVar9 = (char *)(plVar7[7] + 0x10);
|
|
pcVar19 = "dns";
|
|
do {
|
|
if (lVar14 == 0) break;
|
|
lVar14 = lVar14 + -1;
|
|
bVar21 = *pcVar9 == *pcVar19;
|
|
pcVar9 = pcVar9 + 1;
|
|
pcVar19 = pcVar19 + 1;
|
|
} while (bVar21);
|
|
if (bVar21) goto LAB_1400349e3;
|
|
}
|
|
LAB_140034a25:
|
|
if (plVar8 == (longlong *)0x0) {
|
|
local_1a8[0] = operator_new(0xa8);
|
|
if (local_1a8[0] != (FILE *)0x0) {
|
|
plVar12 = FUN_14001ef00(&local_1a8[0]->_ptr,"dns");
|
|
}
|
|
FUN_14001ed00((longlong *)local_198,plVar12);
|
|
plVar8 = plVar12;
|
|
}
|
|
FUN_140020c20(&local_b8,0x40,"%d",1);
|
|
FUN_14001f130(plVar8,"dns",&local_b8);
|
|
}
|
|
pcVar9 = (char *)&DAT_140175100;
|
|
if (0xf < DAT_140175118) {
|
|
pcVar9 = DAT_140175100;
|
|
}
|
|
local_1a8[0] = (FILE *)0x0;
|
|
eVar5 = fopen_s(local_1a8,pcVar9,"w");
|
|
_File = local_1a8[0];
|
|
if ((eVar5 == 0) && (local_1a8[0] != (FILE *)0x0)) {
|
|
if (local_11c != '\0') {
|
|
fputc(0xef,local_1a8[0]);
|
|
fputc(0xbb,_File);
|
|
fputc(0xbf,_File);
|
|
}
|
|
(*(code *)local_198[0][1])(local_198,_File,0);
|
|
ferror(_File);
|
|
fclose(_File);
|
|
}
|
|
printf("Create Patch Option File Succeed \n");
|
|
local_198[0] = TiXmlDocument::vftable;
|
|
if (local_138 != &DAT_14017ce88) {
|
|
operator_delete__(local_130);
|
|
}
|
|
ppuVar13 = TiXmlNode::vftable;
|
|
local_198[0] = TiXmlNode::vftable;
|
|
while (local_170 != (longlong *)0x0) {
|
|
plVar7 = (longlong *)local_170[10];
|
|
ppuVar13 = (undefined **)(**(code **)*local_170)(local_170,1);
|
|
local_170 = plVar7;
|
|
}
|
|
if (local_160 != &DAT_14017ce88) {
|
|
operator_delete__(local_158);
|
|
ppuVar13 = extraout_RAX;
|
|
}
|
|
return CONCAT71((int7)((ulonglong)ppuVar13 >> 8),1);
|
|
LAB_140034303:
|
|
while (lVar14 = (**(code **)(*plVar7 + 0x30))(plVar7), lVar14 == 0) {
|
|
do {
|
|
plVar7 = (longlong *)plVar7[10];
|
|
if (plVar7 == (longlong *)0x0) goto LAB_140034345;
|
|
bVar21 = (char *)(plVar7[7] + 0x10) == (char *)0x0;
|
|
lVar14 = 7;
|
|
pcVar9 = (char *)(plVar7[7] + 0x10);
|
|
pcVar19 = "server";
|
|
do {
|
|
if (lVar14 == 0) break;
|
|
lVar14 = lVar14 + -1;
|
|
bVar21 = *pcVar9 == *pcVar19;
|
|
pcVar9 = pcVar9 + 1;
|
|
pcVar19 = pcVar19 + 1;
|
|
} while (bVar21);
|
|
} while (!bVar21);
|
|
}
|
|
plVar8 = (longlong *)(**(code **)(*plVar7 + 0x30))(plVar7);
|
|
goto LAB_140034345;
|
|
LAB_140034543:
|
|
while (lVar14 = (**(code **)(*plVar7 + 0x30))(plVar7), lVar14 == 0) {
|
|
do {
|
|
plVar7 = (longlong *)plVar7[10];
|
|
if (plVar7 == (longlong *)0x0) goto LAB_140034585;
|
|
bVar21 = (char *)(plVar7[7] + 0x10) == (char *)0x0;
|
|
lVar14 = 8;
|
|
pcVar9 = (char *)(plVar7[7] + 0x10);
|
|
pcVar19 = "connect";
|
|
do {
|
|
if (lVar14 == 0) break;
|
|
lVar14 = lVar14 + -1;
|
|
bVar21 = *pcVar9 == *pcVar19;
|
|
pcVar9 = pcVar9 + 1;
|
|
pcVar19 = pcVar19 + 1;
|
|
} while (bVar21);
|
|
} while (!bVar21);
|
|
}
|
|
plVar8 = (longlong *)(**(code **)(*plVar7 + 0x30))(plVar7);
|
|
goto LAB_140034585;
|
|
LAB_1400349e3:
|
|
while (lVar14 = (**(code **)(*plVar7 + 0x30))(plVar7), lVar14 == 0) {
|
|
do {
|
|
plVar7 = (longlong *)plVar7[10];
|
|
if (plVar7 == (longlong *)0x0) goto LAB_140034a25;
|
|
bVar21 = (char *)(plVar7[7] + 0x10) == (char *)0x0;
|
|
lVar14 = 4;
|
|
pcVar9 = (char *)(plVar7[7] + 0x10);
|
|
pcVar19 = "dns";
|
|
do {
|
|
if (lVar14 == 0) break;
|
|
lVar14 = lVar14 + -1;
|
|
bVar21 = *pcVar9 == *pcVar19;
|
|
pcVar9 = pcVar9 + 1;
|
|
pcVar19 = pcVar19 + 1;
|
|
} while (bVar21);
|
|
} while (!bVar21);
|
|
}
|
|
plVar8 = (longlong *)(**(code **)(*plVar7 + 0x30))(plVar7);
|
|
goto LAB_140034a25;
|
|
}
|
|
|