Исходник Dota 2: Получение информации из структуры энтити + немного netvar + эксплойт

Пользователь
Статус
Оффлайн
Регистрация
7 Сен 2014
Сообщения
61
Реакции[?]
86
Поинты[?]
0
Всем привет, с вами Ve4niySooN.
Немного пореверсил дотку, мб кому пригодится, чтоб не мучатся, как мне.
Принцип такой-же как везде, только нет никакой документации и исходников, по этому если вы школьник или очередной пастер - можете смело выходить, неосилите. Можете репостить с указанием автора (меня).

В краце, находим указатель на CBaseEntity[..], к каждой сущности применимо (в т.ч. для крипов, спеллов и пр.):

Код:
  _Origin         = $1C8; //     Origin Vector
 
  _Items      = $10;    //    Items Pointer
  _ItemsIdent = $58;    //    Items Ident Pointer
  _CurCD      = $3C0; //    Spells CoolDown
  _LvlCD      = $3B8;    //    Spells Level
  _MaxCD      = $3C8;    //    Spells Max CoolDown
 
  _MaxHP      = $1A8; //    Max Health
  _MaxMP      = $938;    //    Max Mana
  _CurHP      = $1AC;    //    Currect Health
  _CurMP      = $934;    //    Current Mana
 
  _Damage     = $a48;    //    Damage
                                       //    Damage + $0 = Min damage
                                       //    Damage + $4    = Max damage
                                       //    Damage + $8 = Add damage
 
  _ModelName  = $9C0;    //    Pointer to AnsiString
  _ModelPath  = $9C8;    //    Pointer to AnsiString
  _Team       = $233;    //    Cardinal!!! 2 = Radiant, 3 = Dire
Пример использования:
Код:
try
    LocalEntity       := UINT64(CBaseNPC.GetLocalPlayer)^;
    LocalNPC.Base       := UINT64(LocalEntity);
    LocalNPC.Team       := PCardinal(  UINT64(LocalEntity) + _Team)^;
    LocalNPC.CurHealth  := PInteger(  UINT64(LocalEntity) + _CurHP)^;
    LocalNPC.MaxHealth  := PInteger(  UINT64(LocalEntity) + _MaxHP)^;
    LocalNPC.CurMana    := PSingle(   UINT64(LocalEntity) + _CurMP)^;
    LocalNPC.MaxMana    := PSingle(   UINT64(LocalEntity) + _MaxMP)^;
  except
    WriteLn('Exception.');
  Exit;
  end;

Одно из самых полезностей, что может вам пригодится, это функция ClientCmd_Unrestricted. С помощью неё можно вызывать любую консольную команду заблокированную в мультиплеере, пусть это и не безопасно. Например, с помощью неё можно написать спам в чат или изменить отдаление камеры (камера хак) или всё, что можно сделать через консоль. Вот её описание и как её найти:
Код:
function(Command: PAnsiChar): Longint;
Код:
@eCreateInterface := GetProcAddress(GetModuleHandle('engine2.dll'), 'CreateInterface');
PEngineTable := eCreateInterface('Source2EngineToClient001', nil);
nUnrestrictedClientCMD будет находится VTable(PEngineTable, 37)


Что с этим можно сделать:



Небольшие факты:

1) Большинство скилов в доте представлены в виде энтити и имеют ownerid и target origin, что делает получение их позиции, хозяина и место на которое они направлены - получаемыми, данные есть в структуре CBaseNPC.
2) Спеллы с задержкой, такие как торрент кунки или санстрайк инвокера отображаются даже в тумане войны.
3) Руна, рошан, все строения в т.ч. потайные лавки и лавки торговцев, фонтан - так-же являются энтити.
4) Рошан в тумане войны не обновляет информацию о себе, как и нейтральные крипы, однако, следующая пачка нейтралов, которые будут заспавнены появляется в списке энтити, и можно получить имя нейтралов и их позицию. Мёртвые нейтралы пропадают со списка, а это даёт нам право определить, в каком лесу и каких крипов зафармили или стакнули даже в тумане войны.
5) m_hReplicatingOtherHeroModel возвращает $FFFFFFFF только если герой НЕ иллюзия, во всех остальных случаях принимает id скопированного героя.
6) Если изменить кол-во регенерации хп в секунду и задать ей значение high(Single) то сервер крашнется. Особо забавно, что краш происходит если изменить простое значение на стороне клиента в его структуре, и вместо краша клиента игры выходит краш сервера.
7) Документация вальве - годится только если распечатать её и ипользовать вместо сортирки. Пока-что самое полное из всех, что может реально пригодится, это:
Пожалуйста, авторизуйтесь для просмотра ссылки.

8) Брошенный хук пуджа это одна из немногих анимаций модели игрока, а не сущность, к которой не применимо то, о чём сказано выше.
9) Руны имеют здоровье О.О
 
Последнее редактирование:
AquaHook
Участник
Статус
Оффлайн
Регистрация
17 Мар 2017
Сообщения
713
Реакции[?]
263
Поинты[?]
0
HVH HATER
Пользователь
Статус
Оффлайн
Регистрация
3 Авг 2016
Сообщения
302
Реакции[?]
100
Поинты[?]
0
Что он делает то ?
В теории (на практике юзаю изи) можно написать ESP для доты, чтобы видеть, какой спот фармит противник в лесу, или изначальная позиция героя при касте некоторых скиллов (блинк, брыжок, ракеты тинкера, хуй паджа, стрела мираны и etc). Да, в тумане войны.
 
Машина
Пользователь
Статус
Оффлайн
Регистрация
7 Ноя 2017
Сообщения
367
Реакции[?]
124
Поинты[?]
0
В теории (на практике юзаю изи) можно написать ESP для доты, чтобы видеть, какой спот фармит противник в лесу, или изначальная позиция героя при касте некоторых скиллов (блинк, брыжок, ракеты тинкера, хуй паджа, стрела мираны и etc). Да, в тумане войны.
В тумане войны будет видно ?
 
Пользователь
Статус
Оффлайн
Регистрация
7 Сен 2014
Сообщения
61
Реакции[?]
86
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
7 Сен 2014
Сообщения
61
Реакции[?]
86
Поинты[?]
0
звучит как ругательство. по факту, в ру-комьюнити НИКТО ничего годного своего пока-что не сделал. всё, что вы видите - либо копипаст, либо опенсорс который продают (d2js, к примеру)
 
Разработчик
Статус
Оффлайн
Регистрация
23 Авг 2017
Сообщения
171
Реакции[?]
474
Поинты[?]
1K
По сути толковой инфы тут нет. Те же оффсеты будут смещены при глобал обнове, ты бы хоть написал как их получать через schema system, с помощью того же апи praydog'a, полезней было бы.
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
4 Ноя 2017
Сообщения
450
Реакции[?]
527
Поинты[?]
1K
Крякнули? Поделишься?) Или кряк только у них?
Не крякнули, отверерсили и перепривязали на свой сервер. Кряк - это означает обход ограничений на покупку (выложить в паблик без потребности в покупке).
Поэтому в пабе ты ничего не найдёшь, кроме вирусов.
Хотя по мнению Вони ivan2301 кряк лежит в гугле, в открытом доступе. Но мы всем форумом искали, и кроме винлокеров ничего не нашли.
Ты можешь обратиться к Воне, тебе он наверняка покажет, где он нашёл "кряк в открытом доступе:


P.S. Конечно никогда и ничего не было в открытом доступе, этот человек, судя по всему, курит что-то, и пишет новости в своей группе.
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2017
Сообщения
35
Реакции[?]
23
Поинты[?]
0
№6 крашит сервер? ап сервер тестился или онли локал? ибо похоже что локал краш))
 
Разработчик
Статус
Оффлайн
Регистрация
23 Авг 2017
Сообщения
171
Реакции[?]
474
Поинты[?]
1K
6) Если изменить кол-во регенерации хп в секунду и задать ей значение high(Single) то сервер крашнется. Особо забавно, что краш происходит если изменить простое значение на стороне клиента в его структуре, и вместо краша клиента игры выходит краш сервера.
Речь ведь идёт об m_flHealthRegen? Изменил значение - ничего не крашнулось и игра вернула то, которое было до изменений.
 
return 0;
Забаненный
Статус
Оффлайн
Регистрация
6 Мар 2017
Сообщения
405
Реакции[?]
237
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не крякнули, отверерсили и перепривязали на свой сервер. Кряк - это означает обход ограничений на покупку (выложить в паблик без потребности в покупке).
Поэтому в пабе ты ничего не найдёшь, кроме вирусов.
Хотя по мнению Вони ivan2301 кряк лежит в гугле, в открытом доступе. Но мы всем форумом искали, и кроме винлокеров ничего не нашли.
Ты можешь обратиться к Воне, тебе он наверняка покажет, где он нашёл "кряк в открытом доступе:


P.S. Конечно никогда и ничего не было в открытом доступе, этот человек, судя по всему, курит что-то, и пишет новости в своей группе.
А самое забавное то, что сам реверсер хейка, лайкнул твоё сообщение)0
 
Сверху Снизу