Насчет второго метода берешь запускаешь иду либо 9.0 либо восьмую версию главное иметь class informer и sigmaker желательно в class informer ищешь CDOTAPlusController берешь вторую функцию
Посмотреть вложение 285700 в ней будет такое
Посмотреть вложение 285701тыкаешь по sub_1821CD3B0(a1); потом получаешь что то жмешь f5 для псевдокода
char __fastcall sub_1821CD3B0(__int64 a1)
{
int v2; // edi
_DWORD *v3; // rax
int *v4; // rax
int *v5; // rdx
__int64 v6; // rax
int v7; // ecx
int *v8; // rax
__int64 v9; // rbx
__int64 (__fastcall *v10)(__int64, __int64); // rsi
__int64 v11; // rax
v2 = -1;
v3 = (_DWORD *)sub_182BCDC70((__int64)&unk_184DD9EE8, -1);
if ( !v3 )
v3 = [I](_DWORD *[/I])(qword_184DD9EF0 + 8);
if ( *v3 )
{
v8 = (int *)sub_182BCDC70((__int64)&unk_184DD9EE8, -1);
if ( !v8 )
v8 = [I](int *[/I])(qword_184DD9EF0 + 8);
if ( *v8 <= 0 )
{
v4 = (int *)sub_182BCDC70((__int64)&unk_184DD9EE8, -1);
if ( !v4 )
v4 = [I](int *[/I])(qword_184DD9EF0 + 8);
if ( *v4 < 0 )
{
v2 = 2;
goto LABEL_20;
}
}
else
{
v2 = 1;
v4 = (int *)sub_182BCDC70((__int64)&unk_184DD9EE8, -1);
if ( !v4 )
v4 = [I](int *[/I])(qword_184DD9EF0 + 8);
LOBYTE(v4) = *v4 == 1;
*(_BYTE *)(a1 + 28) = (_BYTE)v4;
}
}
else
{
v4 = (int *)sub_181A98990();
if ( v4 )
{
v6 = (__int64)sub_181A98990();
v4 = (int *)sub_181A99870(v6);
v5 = v4;
if ( v4 )
{
LODWORD(v4) = v4[11];
v2 = 2 - ((_DWORD)v4 != 0);
if ( (_DWORD)v4 == 2 )
{
*(_DWORD *)(a1 + 0x14) = v5[9];
*(_DWORD *)(a1 + 0x18) = v5[13] + v5[16];
LOBYTE(v4) = (v5[10] & 0x10) == 0;
*(_BYTE *)(a1 + 0x1C) = (_BYTE)v4;
goto LABEL_21;
}
if ( (_DWORD)v4 == 1 )
{
v7 = v5[12];
*(_DWORD *)(a1 + 20) = v7;
*(_DWORD *)(a1 + 24) = v5[13] + v7;
LABEL_20:
*(_BYTE *)(a1 + 28) = 0;
}
}
}
}
LABEL_21:
if ( *(_DWORD *)(a1 + 0x10) != v2 )
{
*(_DWORD *)(a1 + 16) = v2;
v9 = qword_184E50F28;
v10 = [I](__int64 (__fastcall [I][/I])(__int64, __int64))([/I](_QWORD *)qword_184E50F28 + 392LL);
v11 = sub_181482860(32LL, v5);
if ( v11 )
{
*(_WORD *)(v11 + 8) = word_1848E2EDC;
*(_QWORD *)(v11 + 12) = qword_1846A21B0;
*(_QWORD *)v11 = &panorama::CUIEvent<0,enum EDOTAPlusSubscriptionStatus>::`vftable';
*(_DWORD *)(v11 + 24) = v2;
}
LOBYTE(v4) = v10(v9, v11);
}
return (char)v4;
}
для чего первые проверки я хуй знает лол идешь в низ и видишь if ( (_DWORD)v4 == 2 ) и еще чуть ниже if ( (_DWORD)v4 == 1 ) не помню точно кто за что отвечает 2 вроде 2 означает если ты купил только что дота плюс либо а 1 вроде что у тебя он был куплен я короче хуй знает смотришь и видишь что это (_DWORD)v4 ида мне уже сказала что это rax идешь в Cheat engine либо по sub ищешь функцию либо по паттерну вот я сделал паттерн 75 ? 48 8B 05 ? ? ? ? 48 8B 40 ? 83 38 ? 75 ? E8 ? ? ? ? 48 85 C0 кинет сюда
Посмотреть вложение 285702тут ищешь что сравнивает (_DWORD)v4 == 2 смотришь чуток выше там будет что то типо
mov eax,[rax+2C] копируешь адресс перезапускаешь доту чит энжином ставишь бряху(через shift f5) возле mov eax,[rax+2C] читаешь rax через cheat engine смотришь это CDOTAGameAccountPlus смотришь 2C там 0 если нету дота плюса 1 или 2 если есть ставишь короче 1 или 2 убираешь бряху и все дота плюс есть насчет шанса пизды получить да хуево знает честно да может я дебил я сам только новичек так что удачи