kulak писал(а):а вот дисплей менеджер экзе зачем?
Я не знаю. Его вызывает вот эта процедура в Launcher.exe:
- Код: Выделить всё
signed int __fastcall sub_438618(void *a1)
{
void *v1; // r8@1
void *v2; // r4@1
HANDLE v3; // r0@2
signed int v4; // r5@2
HWND v5; // r0@8
signed int result; // r0@12
int v7; // r0@13
int v8; // r0@13
int v9; // r1@13
int v10; // r0@17
int v11; // r0@17
DWORD v12; // r5@17
int v13; // r0@32
const CHAR **v14; // r0@32
int v15; // r0@32
const CHAR **v16; // r0@32
HRESULT v17; // r0@32
int v18; // r0@32
signed int v19; // r2@32
void **v20; // lr@32
char v21[4]; // r7@32
signed int v22; // r4@32
unsigned int v23; // r5@34
int v24; // r0@35
void *v25; // r8@41
void *v26; // r4@41
int v27; // r0@43
int v28; // r0@45
int v29; // r0@47
DWORD Data; // [sp+20h] [bp-ACh]@17
int v31; // [sp+24h] [bp-A8h]@17
int v32; // [sp+28h] [bp-A4h]@39
void *v33; // [sp+2Ch] [bp-A0h]@1
void *v34; // [sp+30h] [bp-9Ch]@32
HKEY hKey; // [sp+34h] [bp-98h]@17
int v36; // [sp+38h] [bp-94h]@17
HLOCAL hMem; // [sp+3Ch] [bp-90h]@17
HKEY v38; // [sp+40h] [bp-8Ch]@24
int v39; // [sp+44h] [bp-88h]@24
void *v40; // [sp+48h] [bp-84h]@24
SYSTEMTIME SystemTime; // [sp+4Ch] [bp-80h]@16
char v42; // [sp+5Ch] [bp-70h]@32
char v43; // [sp+60h] [bp-6Ch]@32
char v44; // [sp+64h] [bp-68h]@38
char v45; // [sp+68h] [bp-64h]@38
char v46; // [sp+6Ch] [bp-60h]@39
char v47; // [sp+70h] [bp-5Ch]@39
int v48; // [sp+74h] [bp-58h]@13
int v49; // [sp+78h] [bp-54h]@13
int v50; // [sp+7Ch] [bp-50h]@13
int v51; // [sp+80h] [bp-4Ch]@13
int v52; // [sp+84h] [bp-48h]@13
int v53; // [sp+88h] [bp-44h]@13
int v54; // [sp+8Ch] [bp-40h]@16
int v55; // [sp+94h] [bp-38h]@13
int v56; // [sp+98h] [bp-34h]@13
int v57; // [sp+9Ch] [bp-30h]@13
char v58; // [sp+A0h] [bp-2Ch]@17
v1 = a1;
v33 = a1;
OutputDebugStringW(L"Launcher :: trying to start.\r\n");
v2 = operator new(4u);
if ( v2 )
{
v3 = CreateMutexW(0, 1, L"Launcher_{C5319E0C-C728-4720-99A3-0F070B76D274}");
*(_DWORD *)v2 = v3;
v4 = 0;
if ( v3 && GetLastError() != 183 )
v4 = 1;
if ( !v4 )
{
if ( *(_DWORD *)v2 )
{
CloseHandle(*(HANDLE *)v2);
*(_DWORD *)v2 = 0;
}
v5 = FindWindowW(0, L"Launcher");
if ( v5 )
SetForegroundWindow(v5);
}
}
else
{
v2 = 0;
}
*((_DWORD *)v1 + 33) = v2;
if ( **((_DWORD **)v1 + 33) == 0 )
{
OutputDebugStringW(L"Launcher :: found another process.\r\n");
return 0;
}
sub_437820(0);
v7 = sub_41C6D8(&dword_454840, L"Launcher.ini");
sub_4376C0(v7);
sub_437BDC(v1);
v48 = 0;
v49 = 0;
v50 = 0;
v51 = 1;
v52 = 0;
v53 = 100;
v55 = -1;
v8 = mktime64(&v48);
v57 = v9;
v56 = v8;
if ( (v8 & v9) == -1 )
sub_402660(-2147024809);
if ( !localtime64_s(&v48, &v56) )
{
SystemTime.wMonth = v52 + 1;
SystemTime.wYear = v53 + 1900;
SystemTime.wDayOfWeek = v54;
SystemTime.wDay = v51;
SystemTime.wHour = v50;
SystemTime.wMinute = v49;
SystemTime.wSecond = v48;
SystemTime.wMilliseconds = 0;
}
SetSystemTime(&SystemTime);
v10 = MFC90U_277(&v58, L"ui_skin");
sub_4028A4(&dword_454840, &v31, v10, L"default");
v11 = MFC90U_277(&Data, L"ui_locale");
v12 = sub_41C13C(&dword_454840, v11, 1033);
hKey = 0;
v36 = 0;
hMem = 0;
if ( RegCreateKeyExW(HKEY_LOCAL_MACHINE, L"TINNOS\\SOFTWARE", 0, 0, 0, 0, 0, &hKey, &Data) )
goto LABEL_20;
sub_402CE8(&hKey, L"APPLICATION_SKIN", v31);
Data = v12;
if ( hKey )
{
RegSetValueExW(hKey, L"APPLICATION_LOCALE_ID", 0, 4u, (const BYTE *)&Data, 4u);
LABEL_20:
if ( hKey )
RegCloseKey(hKey);
}
if ( hMem )
LocalFree(hMem);
v38 = 0;
v39 = 0;
v40 = 0;
if ( !RegOpenKeyExW(HKEY_CLASSES_ROOT, L"Media Type\\Extensions\\.wma", 0, 0, &v38) )
sub_402CE8(&v38, L"Source Filter", L"{6B6D0800-9ADA-11D0-A520-00A0D10129C0}");
if ( v38 )
RegCloseKey(v38);
if ( v40 )
LocalFree(v40);
if ( (*(int (**)(void))(dword_455220 + 4))() )
{
v13 = sub_402A98(&Data);
v14 = (const CHAR **)sub_403020(&v34, v13, L"DisplayManager.exe");
sub_42CF50(v14, 0);
MFC90U_445(&Data);
v15 = sub_402A98(&Data);
v16 = (const CHAR **)sub_403020(&v34, v15, L"ThumbnailMaker.exe");
sub_42CF50(v16, 0);
MFC90U_445(&Data);
v17 = CoInitializeEx(0, 0);
v18 = sub_437924(v17);
sub_437E54(v18);
MFC90U_277(&v42, L"task null");
v43 = 0;
sub_413B70(&dword_454828, &v42);
MFC90U_445(&v42);
v19 = 1321528399;
v20 = &MFC90U_287;
*(_DWORD *)v21 = algn_45474C;
v22 = 1;
do
{
if ( v22 < 1 )
goto LABEL_50;
v23 = *(_DWORD *)(*(_DWORD *)v21 + 0xFFFFFFFC);
if ( *(_DWORD *)(*(_DWORD *)v21 + 0xFFFFFFFC) < 0 )
goto LABEL_50;
v24 = dword_454874;
if ( v23 >= ((signed int)((unsigned __int64)((dword_454878 - dword_454874) * (signed __int64)v19) >> 32) >> 4)
+ ((unsigned int)((unsigned __int64)((dword_454878 - dword_454874) * (signed __int64)v19) >> 32) >> 31) )
{
invalid_parameter_noinfo();
v20 = &MFC90U_287;
v24 = dword_454874;
}
if ( v24 + 52 * v23 )
{
MFC90U_277(&v44, *(_DWORD *)(v24 + 52 * v23 + 48));
v45 = 0;
sub_413B70(&dword_454828, &v44);
MFC90U_445(&v44);
}
else
{
LABEL_50:
((void (__fastcall *)(int *))*v20)(&v32);
MFC90U_1460(&v32, (const char *)L"task %d", v22);
MFC90U_277(&v46, v32);
v47 = 0;
sub_413B70(&dword_454828, &v46);
MFC90U_445(&v46);
MFC90U_445(&v32);
}
++v22;
v19 = 1321528399;
v20 = &MFC90U_287;
*(_DWORD *)v21 += 4;
}
while ( v22 < 18 );
v25 = v33;
MFC90U_3362(v33, L"Launcher", 1321528399);
SetThreadPriority(*((HANDLE *)v25 + 11), 1);
v26 = operator new(0xC0u);
v34 = v26;
if ( v26 )
{
v33 = operator new(0x1860u);
if ( v33 )
v27 = sub_4369FC();
else
v27 = 0;
v28 = sub_42C5EC(v26, v27);
}
else
{
v28 = 0;
}
*((_DWORD *)v25 + 34) = v28;
*((_DWORD *)v25 + 8) = *((_DWORD *)v25 + 34);
v29 = MFC90U_801(0, 0, 0, 0);
(*(void (__fastcall **)(_DWORD, _DWORD, int, _DWORD))(**((_DWORD **)v25 + 8) + 92))(
*((_DWORD *)v25 + 8),
0,
v29,
L"Launcher");
OutputDebugStringW(L"Launcher :: normal startup.\r\n");
MFC90U_445(&v31);
result = 1;
}
else
{
OutputDebugStringW(L"Launcher :: LoadResource() error.\r\n");
MFC90U_445(&v31);
result = 0;
}
return result;
}
В общем он относиться к проигрыванию видео.
Код ОЧЕНЬ похож на исходники отсюда: http://cugsula-cgui.googlecode.com/svn/ ... deo/Video/