1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| int __cdecl sub_10015B32(int a1, int a2) { HANDLE MutexA; _DWORD v4[4]; char v5; _BYTE v6[384]; if ( a2 == 0 ) return 0; memset(a1: (_BYTE *)a2, a2: 0, a3: 104); if ( sub_10015964(a1: v6) == 0 ) return 0; v4[0] = *(_DWORD *)&v6[151]; v4[1] = *(_DWORD *)&v6[155]; v4[2] = *(_DWORD *)&v6[159]; v4[3] = *(_DWORD *)&v6[163]; v5 = 0; sub_100016E2(a1: "Global\\ProRAM-Agent-"); sub_10001776(a1: v4); MutexA = CreateMutexA(lpMutexAttributes: nullptr, bInitialOwner: true, lpName: (LPCSTR)(a2 + 8)); *(_DWORD *)a2 = MutexA; if ( MutexA == nullptr ) return 0; if ( GetLastError() == 183 ) { WriteLogs(lpBuffer: "duplicate_instance"); CloseHandle(hObject: *(HANDLE *)a2); *(_DWORD *)a2 = 0; return 0; } return 1; } int __fastcall sub_10015964(int a1, const char *a2, int a3) { _BYTE *v5; _BYTE *v6; _DWORD v8[18]; _BYTE v9[160]; _BYTE v10[64]; CHAR Buffer[96]; _BYTE v12[32]; _BYTE v13[32]; _BYTE v14[36]; if ( a1 == 0 || a3 == 0 ) return 0; memset(a1: (_BYTE *)a3, a2: 0, a3: 384); if ( a2 == nullptr || *a2 == 0 ) a2 = "template-build"; if ( sub_1001575B(a1: a2, a2: v12) == 0 ) return 0; sub_1001A126(a1: v12); sub_100016E2(a1: v9, a2: 0xA0u, a3: "PRO_RAM_AGENT_HELLO_V1:"); v5 = sub_1001AF30(a1); if ( (unsigned int)&sub_1001AF30(a1: (int)v9)[(_DWORD)v5 + 1] > 0xA0 ) return 0; sub_10001776(a1); v6 = sub_1001AF30(a1: (int)v9); sub_1001A17C(a1: v6, a2: v14, a3: v10); sub_10015822(a1: a3 + 96, a2: 48); sub_10015822(a1: a3 + 288, a2: 96); sub_10018E93(a1: v13); sub_100016E2(a1: (_BYTE *)(a3 + 144), a2: 0x48u, a3: "sha256:"); sub_1001B330(a1: v13, a2: 32, a3: a3 + 151, a4: 65); sub_10015191(a1: a3 + 216); Buffer[0] = 0; if ( sub_10014FB0() != 0 ) sub_10014F27(lpName: "PRORAM_AGENT_ID", lpBuffer: Buffer, nSize: 0x60u); if ( Buffer[0] != 0 ) { sub_100016E2(a1: (_BYTE *)a3, a2: 0x60u, a3: Buffer); } else { sub_1001B330(a1: v13, a2: 32, a3: v8, a4: 65); sub_100016E2(a1: (_BYTE *)a3, a2: 0x60u, a3: "agent_c_"); *(_DWORD *)(a3 + 8) = v8[0]; *(_DWORD *)(a3 + 12) = v8[1]; *(_DWORD *)(a3 + 16) = v8[2]; *(_DWORD *)(a3 + 20) = v8[3]; *(_BYTE *)(a3 + 24) = 0; } return 1; }
|