Вопрос Dota Plus

Начинающий
Статус
Оффлайн
Регистрация
5 Дек 2022
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Я только начинаю в этом разбираться, поэтому не судите и не бейте ногами. Я хочу сделать визуальный дота плюс, но я не совсем понимаю что мне для этого нужно и где мне находить значения для него(искал только через Cheat Engine). Пока что написал на С# только отдаление камеры, изменение погоды, фог и фарз, с адресами и оффсетами через cheat engine. Заранее спасибо за помощь
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
324
Реакции[?]
24
Поинты[?]
12K
Я только начинаю в этом разбираться, поэтому не судите и не бейте ногами. Я хочу сделать визуальный дота плюс, но я не совсем понимаю что мне для этого нужно и где мне находить значения для него(искал только через Cheat Engine). Пока что написал на С# только отдаление камеры, изменение погоды, фог и фарз, с адресами и оффсетами через cheat engine. Заранее спасибо за помощь
есть вроде 2 метода, один затратный а второй менее - по времени.

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

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

В соседнем разделе есть гайДик от ExistedDim4
2) А мануальный метод (Outdated но если покопаешься я уверен что мб чето нароешь) найдешь здесь от вульфа
перед загрузкой игры надо какое то значение изменить
 
Начинающий
Статус
Оффлайн
Регистрация
5 Дек 2022
Сообщения
3
Реакции[?]
0
Поинты[?]
0
есть вроде 2 метода, один затратный а второй менее - по времени.

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

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

В соседнем разделе есть гайДик от ExistedDim4
2) А мануальный метод (Outdated но если покопаешься я уверен что мб чето нароешь) найдешь здесь от вульфа
перед загрузкой игры надо какое то значение изменить
Спасибо за ответ, пока что немного не понимаю, но пытаюсь разобраться. Есть еще вопрос, откуда можно брать дампы доты?
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
324
Реакции[?]
24
Поинты[?]
12K
Спасибо за ответ, пока что немного не понимаю, но пытаюсь разобраться. Есть еще вопрос, откуда можно брать дампы доты?
Дампы бери из группы там гдето либералист кидал недавний дамп. А так лично рекомендую изучить шему или точнее как получать самим оффсеты вручную. Согласен, что сложно для новичка но уверен что если проведешь 1-2 месяца то изучишь это дело
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
Начинающий
Статус
Оффлайн
Регистрация
23 Янв 2022
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
есть вроде 2 метода, один затратный а второй менее - по времени.

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

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

В соседнем разделе есть гайДик от ExistedDim4
2) А мануальный метод (Outdated но если покопаешься я уверен что мб чето нароешь) найдешь здесь от вульфа
перед загрузкой игры надо какое то значение изменить
Насчет второго метода берешь запускаешь иду либо 9.0 либо восьмую версию главное иметь class informer и sigmaker желательно в class informer ищешь CDOTAPlusController берешь вторую функцию1726354570658.png в ней будет такое 1726354792801.pngтыкаешь по sub_1821CD3B0(a1); потом получаешь что то жмешь f5 для псевдокода
xueta:
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 убираешь бряху и все дота плюс есть насчет шанса пизды получить да хуево знает честно да может я дебил я сам только новичек так что удачи
 
Начинающий
Статус
Оффлайн
Регистрация
5 Дек 2022
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Насчет второго метода берешь запускаешь иду либо 9.0 либо восьмую версию главное иметь class informer и sigmaker желательно в class informer ищешь CDOTAPlusController берешь вторую функциюПосмотреть вложение 285700 в ней будет такое Посмотреть вложение 285701тыкаешь по sub_1821CD3B0(a1); потом получаешь что то жмешь f5 для псевдокода
xueta:
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
 
Начинающий
Статус
Оффлайн
Регистрация
23 Янв 2022
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
Привет, огромное спасибо за гайд, у меня есть пару вопросов. "читаешь 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.png1726364047973.png на смещении 2C у меня 0 так как дота плюс закончился уже ставлю 1 или 2 убираю бряху 1726364269556.pngи вот Dota plus
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
23 Янв 2022
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
справа сверху есть регистры там есть 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 потом ищешь указатель на CDOTAGameAccountPlus1726369503058.png и там будет 2C это 0либо 1 либо 2 а на смещени 28 флаги как сказал вульф Разные варианты плюса. Нету, есть, есть пробный, был пробный, еще что-то и тд ну потом бряху убираешь. все честно хуйню написал сам нихуя не понял что написал
 
Сверху Снизу