Вопрос Dota Plus

  • Автор темы Автор темы desorzzz
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
5 Дек 2022
Сообщения
4
Реакции
0
Я только начинаю в этом разбираться, поэтому не судите и не бейте ногами. Я хочу сделать визуальный дота плюс, но я не совсем понимаю что мне для этого нужно и где мне находить значения для него(искал только через Cheat Engine). Пока что написал на С# только отдаление камеры, изменение погоды, фог и фарз, с адресами и оффсетами через cheat engine. Заранее спасибо за помощь
 
Я только начинаю в этом разбираться, поэтому не судите и не бейте ногами. Я хочу сделать визуальный дота плюс, но я не совсем понимаю что мне для этого нужно и где мне находить значения для него(искал только через Cheat Engine). Пока что написал на С# только отдаление камеры, изменение погоды, фог и фарз, с адресами и оффсетами через cheat engine. Заранее спасибо за помощь
есть вроде 2 метода, один затратный а второй менее - по времени.

1) берешь ищешь CSharedObject* dotaplus. Изменяешь ему значение
BF9NGYt.png

и потом обновляешь у всех слушателей (Listener)

В соседнем разделе есть гайДик от @ExistedDim4
2) А мануальный метод (Outdated но если покопаешься я уверен что мб чето нароешь) найдешь здесь от вульфа
перед загрузкой игры надо какое то значение изменить
 
есть вроде 2 метода, один затратный а второй менее - по времени.

1) берешь ищешь CSharedObject* dotaplus. Изменяешь ему значение
BF9NGYt.png

и потом обновляешь у всех слушателей (Listener)

В соседнем разделе есть гайДик от @ExistedDim4
2) А мануальный метод (Outdated но если покопаешься я уверен что мб чето нароешь) найдешь здесь от вульфа
перед загрузкой игры надо какое то значение изменить

Спасибо за ответ, пока что немного не понимаю, но пытаюсь разобраться. Есть еще вопрос, откуда можно брать дампы доты?
 
Спасибо за ответ, пока что немного не понимаю, но пытаюсь разобраться. Есть еще вопрос, откуда можно брать дампы доты?
Дампы бери из группы там гдето либералист кидал недавний дамп. А так лично рекомендую изучить шему или точнее как получать самим оффсеты вручную. Согласен, что сложно для новичка но уверен что если проведешь 1-2 месяца то изучишь это дело
 
есть вроде 2 метода, один затратный а второй менее - по времени.

1) берешь ищешь CSharedObject* dotaplus. Изменяешь ему значение
BF9NGYt.png

и потом обновляешь у всех слушателей (Listener)

В соседнем разделе есть гайДик от @ExistedDim4
2) А мануальный метод (Outdated но если покопаешься я уверен что мб чето нароешь) найдешь здесь от вульфа
перед загрузкой игры надо какое то значение изменить
Насчет второго метода берешь запускаешь иду либо 9.0 либо восьмую версию главное иметь class informer и sigmaker желательно в class informer ищешь CDOTAPlusController берешь вторую функцию1726354570658.png в ней будет такое 1726354792801.pngтыкаешь по sub_1821CD3B0(a1); потом получаешь что то жмешь f5 для псевдокода
xueta:
Expand Collapse Copy
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])(__int64, __int64))(*(_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 кинет сюда1726355346790.pngтут ищешь что сравнивает (_DWORD)v4 == 2 смотришь чуток выше там будет что то типо
mov eax,[rax+2C] копируешь адресс перезапускаешь доту чит энжином ставишь бряху(через shift f5) возле mov eax,[rax+2C] читаешь rax через cheat engine смотришь это CDOTAGameAccountPlus смотришь 2C там 0 если нету дота плюса 1 или 2 если есть ставишь короче 1 или 2 убираешь бряху и все дота плюс есть насчет шанса пизды получить да хуево знает честно да может я дебил я сам только новичек так что удачи
 
Насчет второго метода берешь запускаешь иду либо 9.0 либо восьмую версию главное иметь class informer и sigmaker желательно в class informer ищешь CDOTAPlusController берешь вторую функциюПосмотреть вложение 285700 в ней будет такое Посмотреть вложение 285701тыкаешь по sub_1821CD3B0(a1); потом получаешь что то жмешь f5 для псевдокода
xueta:
Expand Collapse Copy
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 убираешь бряху и все дота плюс есть насчет шанса пизды получить да хуево знает честно да может я дебил я сам только новичек так что удачи
Привет, огромное спасибо за гайд, у меня есть пару вопросов. "читаешь rax через cheat engine смотришь это CDOTAGameAccountPlus смотришь 2C там 0", как ты это сделал? Через ctrl+d, ctrl+n(структуры)? Я нашел mov eax,[rax+2C], но я не до конца понимаю как ты нашел значение 0 и где конкретно мне нужно поменять тот самый 0 на 1/2. Заранее спасибо за ответ *и еще, прими в заявку дискорде
1726362002705.png
 
Привет, огромное спасибо за гайд, у меня есть пару вопросов. "читаешь rax через cheat engine смотришь это CDOTAGameAccountPlus смотришь 2C там 0", как ты это сделал? Через ctrl+d, ctrl+n(структуры)? Я нашел mov eax,[rax+2C], но я не до конца понимаю как ты нашел значение 0 и где конкретно мне нужно поменять тот самый 0 на 1/2. Заранее спасибо за ответ *и еще, прими в заявку дискорде Посмотреть вложение 285708
справа сверху есть регистры там есть RAX с него скопируй адресс я про то что в RAX потом в tool найди dissect data
1726363795390.png
потом введи адрес сюда
1726363856407.png
нажми на Structures и Define new structure и по смещению 2C там будет 0 либо 1 либо 2
справа сверху есть регистры там есть RAX с него скопируй адресс я про то что в RAX потом в tool найди dissect data
1726363795390.png
потом введи адрес сюда
1726363856407.png
нажми на Structures и Define new structure и по смещению 2C там будет 0 либо 1 либо 2
1726364027553.png
1726364047973.png
на смещении 2C у меня 0 так как дота плюс закончился уже ставлю 1 или 2 убираю бряху
1726364269556.png
и вот Dota plus
 
Последнее редактирование:
справа сверху есть регистры там есть RAX с него скопируй адресс я про то что в RAX потом в tool найди dissect data Посмотреть вложение 285709потом введи адрес сюда Посмотреть вложение 285710 нажми на Structures и Define new structure и по смещению 2C там будет 0 либо 1 либо 2

Посмотреть вложение 285712Посмотреть вложение 285713 на смещении 2C у меня 0 так как дота плюс закончился уже ставлю 1 или 2 убираю бряху Посмотреть вложение 285714и вот Dota plus
а вообще я тут посидел и понял что тут есть Gamecoordinator
1726368725958.png
эти 2 sub делают return qword вот сигнатура E8 ? ? ? ? 48 8D 88 ? ? ? ? 48 83 C4 получишь что типо этого
1726369101272.png
нажимаешь левой кнопкой два раза копируешь адрес потом ctrl+G вставляешь адрес enter и ты должен также успеть поставить бряху будет что то типо lea rax,[Адресс какойто ]адрес копируешь смотришь структуру идешь на смещение 598 потом на смещение 18 и там будет CGCClientSharedObjectTypeCache потом ищешь указатель на CDOTAGameAccountPlus
1726369503058.png
и там будет 2C это 0либо 1 либо 2 а на смещени 28 флаги как сказал вульф Разные варианты плюса. Нету, есть, есть пробный, был пробный, еще что-то и тд ну потом бряху убираешь. все честно хуйню написал сам нихуя не понял что написал
 
Назад
Сверху Снизу