Сейчас на форуме: Magister Yoda, vasilevradislav (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› выпилить Steam из игры Dota 2
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 19 января 2014 15:31
· Личное сообщение · #1

Вот решил посмотреть, что такое Steam внутри. Поиграл в эту доту2 - быстро надоело, решил немного надругаться над игрой по аналогии с DUNE 2009 Patch
Техническая суть вопроса: насколько понял, нужно просто правильно эмульнуть ответы по обращению движка engine.dll(и иже с ним) к steam_api.dll (Вроде существует ломанный клиент, но меня тянет на велосипед). Кто нибудь отвязывал стим? Есть ли грабли и с чем их едят?



Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 04 февраля 2014 10:32
· Личное сообщение · #2

ELF_7719116 возможно это оптимизация функции #define




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 04 февраля 2014 11:21
· Личное сообщение · #3

Дефайн-это не функция. И он подставляется препроцессором на место вызова.
На мой взгляд, кодес такой из-за виртуальных функций и наследования классов.

| Сообщение посчитали полезным: ajax

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 24 декабря 2015 20:15
· Личное сообщение · #4

Sorry, dear Gabe Newell! But linux reversing live too lol!

Code:
  1. file '/home/.steam/steam/steamapps/common/dota 2 beta/game/dota/bin/linuxsteamrt64/libserver.so'
  2. /home/.steam/steam/steamapps/common/dota 2 beta/game/dota/bin/linuxsteamrt64/libserver.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=1d69be8d00adb27ad9667d55d7ecda3c31f05d53, not stripped
  3.  
  4. ~/ida$ ./idaq64 '/home/.steam/steam/steamapps/common/dota 2 beta/game/dota/bin/linuxsteamrt64/libserver.so'


sv_gravity 100 - эт чё, типа если гравитацию поставить сотку, то в доте, как и в контре: по всей карте будут летать герои??!




Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 24 декабря 2015 21:36
· Личное сообщение · #5

ELF_7719116, обкатываешь слитую иду под линь?
Ну ты зайди в игре (там где-то можно бегать и тестить команды) можно все потыкать и глянуть.



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 25 декабря 2015 05:32
· Личное сообщение · #6

Верятно гравитация отвечает за дальность перемещения при отбросе, как например от Blinding Light котла, Flamebreak батрайдера, Gust траксы, Deafening Blast инвокера и т.д.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 25 декабря 2015 11:26
· Личное сообщение · #7

ELF_7719116 пишет:
по всей карте будут летать герои??!

Как ты себе это представляешь? Даже прыжка в доте нет.

И кстати чтобы реверсить доту под линукс не надо иметь для этого иду под линукс. Достаточно отладочный сервер линукса скинуть.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 25 декабря 2015 17:43
· Личное сообщение · #8

v00doo пишет:
Ну ты зайди в игре (там где-то можно бегать и тестить команды) можно все потыкать и глянуть.

драйвер опенсоурсный стоит - а steam'у нужен пропиетарный.

TryAga1n пишет:
дальность перемещения при отбросе, как например от Blinding Light котла, Flamebreak батрайдера, Gust траксы, Deafening Blast инвокера и т.д.

по идее ещё при прыжке должна действовать

int пишет:
И кстати чтобы реверсить доту под линукс не надо иметь для этого иду под линукс.

да знаю! но как-то обычный linux более радует глаз теперь (Там жеж по 80_PA, правда эт в личке..ну ты понел)



Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 декабря 2015 18:27
· Личное сообщение · #9

Здравствуйте уважаемые хакеры
Я прочитал Вашу тему и мне стало очень интересно. Скажите пожалуйста можно ли рассчитать точное попадание стрелой мираны в героя из вражеской команды? Это решаемая задача? Как это запрограммировать, и чтобы ещё выводилось на экран?
Прошу только не банить меня за вопрос такой.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 29 декабря 2015 20:40 · Поправил: ELF_7719116
· Личное сообщение · #10

antoshka_kartoshka пишет:
Скажите пожалуйста можно ли рассчитать точное попадание стрелой мираны в героя из вражеской команды? Это решаемая задача? Как это запрограммировать, и чтобы ещё выводилось на экран?

ахаха! Но тем не менее - вопрос интересный. Не скрою - меня он заинтриговал. Решение данной задачи можно интрепритировать по двум областям математики: теории вероятностей или геометрии. Конечно я в курсе, что знание теории вероятностей у среднестатестического дотера равно нулю, а знания в области геометрии - немногим больше нуля. Поэтому попробую кратко обьяснить, исходя из области геометрии. Возможно кому-то тоже пригодится.

РЕШЕНИЕ ЗАДАЧИ ПРО МИРАНУ и СТРЕЛУ
Задача про стрелу аналогична задаче о вычислении точки встречи вражеского корабля и торпеды подводной лодки. Зная скорость и направление движения (угол) корабля, скорость торпеды, а также учитывая тот факт, что время движения торпеды до места пересечения равно времени хода корабля до места пересения - можно вычислить угол, под которым должна быть выстрелена торпеда (т.е. по сути мы получим точку пересения).

Представляем сцену в форме треугольника (показано на картинке).
точка A - враг; точка B - mirana, точка C- пересение стрелы и врага, всё это образует треуголник ABC. Враг движется с известной скоростью v, стрела несется со известной скоростью u, известный угол альфа - положение врага относитель точки пуска стрелы (мираны), сторона (расстояние) AB так-же нам будет известно. Опуская технические вопросы вычисления угла альфа (стороны AB) из потрохов движка доты2 (сами уже в этом разбирайтесь).

Естественно, все знают форму пути s=u*t, откуда:
Code:
  1. АС = v*,     CB = u*
  2. где, tв - время подхода врага
  3. где, tc - время полета стрелы до попадания в цель

Уместно заметить, что к времени на стрелу tc нужно ещё накинуть время задержки на пуск и время доворота героя на азимут пуска, но я это тоже опущу для простоты.
Естественно, что:
Code:
  1. tc =

Собственно остаётся только применить теорему синусов (стороны треугольника пропорциональны синусам противолежащих углов):
АС/sinβ = BC/sinα
или
vt/sinβ = ut/sinα
отсюда получаем формулу для расчета угла бета по довороту мираны на азимут пуска стрелы
***********************************
* β = arcsin(v*sinα/u) *
***********************************

В программе выглядет это как-то так:
Code:
  1. // (С)ELF, 2015
  2. // v0.1
  3. #include "math.h"
  4. #define ARROW_u_speed 857 //скорость полета стрелы
  5. #define ARROW_max_range 3000 //максимально возможная дальность полета стрелы
  6.  
  7. #define MIRANA_launch_arrow_delay 0,5 //задержка при выстреле
  8.  
  9. #define ERROR_OUT_OF_RANGE -1 //ошибка: дальность полета стрелы превышает максимальное значение
  10.  
  11. unsigned int Mirana_Arrow(unsigned int alpha_angle, //угол альфа в треугольнике ABC
  12.                                          unsigned int v_speed_enemy, //скорость врага
  13.                                          unsigned int AB_side) //расстояние между врагом и мираной в момент выстрела
  14. {
  15.          // расчёт угла поворота
  16.          unsigned int beta_angle = asin ((v_speed_enemy * sin(alpha_angle))/ARROW_u_speed);
  17.  
  18.          // расчёт дальности полета стрелы
  19.          unsigned int BC_side = ((AB_side * sin(alpha_angle))/sin(180-alpha_angle-beta_angle));
  20.  
  21.          // критичное условие попадания стрелы
  22.          if (BC_side > ARROW_max_range)
  23.          {return ERROR_OUT_OF_RANGE;}
  24.  
  25.          // время полеты стрелы
  26.          unsigned int fly_time = BC_side/ARROW_u_speed;
  27.  
  28. return beta_angle; //угол поворота мираны для пуска стрелы
  29. }

Это самый, очевидный мне, вариант решения указанной задачи. Надеюсь, это и ожидал прочитать любознательный игрок.



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 29 декабря 2015 21:51 · Поправил: v00doo
· Личное сообщение · #11

ELF_7719116, а теперь всего-то осталось:
1. сделать инжект и повесить хуки на вывод.
2. перехватить значения в памяти характеристик героя по карте.
3. определить мирану.
4. определить ближайших таргетов.
5. выполнить расчет и нарисовать прямые пересечений в игре.
Подумаешь

Ps И получить потом бан аккаунта, ибо там защита висит, для любителей использовать хаки, или еще это обходить сидеть

| Сообщение посчитали полезным: ELF_7719116


Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 30 декабря 2015 02:02
· Личное сообщение · #12

а потом продавать.




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 30 декабря 2015 04:28
· Личное сообщение · #13

v00doo пишет:
И получить потом бан аккаунта, ибо

???))) подключить либо OPNGL либо DirectX и прорисовать на карте трассируещие лучи , бан получишь если в памяте поменяешь некоторые значения, а если считаешь то никто это и не заметит)))))

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 30 декабря 2015 05:37
· Личное сообщение · #14

ELF_7719116, в расчет не взята скорость разворота самой потмы, по направлению запуска стрелы, ну и конечно же крипы. Но самой большой проблемой при таком расчете, будут конечно же мансы влево-вправо с разными интервалами времени, направлениями и расстояниями. Так что можно сказать, что задача не решаема



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 30 декабря 2015 07:38
· Личное сообщение · #15

TryAga1n пишет:
в расчет не взята скорость разворота самой потмы, по направлению запуска стрелы, ну и конечно же крипы

За разворот потмы я написал - "и время доворота героя на азимут пуска". Крипы - ну да, надо считать отдельно до пуска стрелы Да там, вообще, много ньансов. Ещё, к примеру, в лесу зверьки в лагерях (ну или как там они называются)
ClockMan пишет:
подключить либо OPNGL либо DirectX и прорисовать на карте трассируещие лучи , бан получишь если в памяте поменяешь некоторые значения, а если считаешь то никто это и не заметит)))))

Я думаю можно - не видел ни разу проверку crc в движке. В самом движке (на винде) directx.

v00doo
Gideon Vi пишет:
а потом продавать.

Так может дотеры скинутся. ИХ вон сколько много. Если сумма выйдет более ляма - то можно сделать



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 30 декабря 2015 11:25
· Личное сообщение · #16

ELF_7719116 пишет:
щё, к примеру, в лесу зверьки в лагерях

нейтралы)

Также стоить учесть, что движение другого героя неравномерно, может он дернется и повернет в другую сторону или остановится.

Получить направление героя не вопрос, у каждого почти класса в доте есть подкласс Vector, который задает направление. Про скорость не знаю, не изучал данный вопрос. Кстати получить коры героев, которых не видно тебе, получить нереально, только если ты не сервер. Я не знаю деталей реализации FogOfWar (туман войны, класс, который скрывает локации героев), но уверен, что сервер не отправляет данных о местоположении других вражеских героев на клиент, который их не видит.

Однако на сервер можно придумать сплойты, ибо написан он коряво, они явно спешат с релизами.




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 30 декабря 2015 12:28
· Личное сообщение · #17

int пишет:
но уверен, что сервер не отправляет данных о местоположении других вражеских героев на клиент

Думаю отправляет,взять известную игру Варфрейм там есть дымовые завесы и световые граната, так обойти это на стороне клиента не проблема )))))

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 30 декабря 2015 13:53
· Личное сообщение · #18

int пишет:
. Кстати получить коры героев, которых не видно тебе, получить нереально, только если ты не сервер. Я не знаю деталей реализации FogOfWar (туман войны, класс, который скрывает локации героев)

Судя по тому, что корректное отображение вражеских героев при выходе из тумана войны очень сильно хромает (бывает, что сервер позже показывает - когда герой прошел уже до фига; и баг ещё с курьером был - когда при убийстве, его смерть несколько раз отображалась при рассеивании ForofWar), то, действительно, сервер сам всё рассчитывает. Пару раз я видел, как метка вражеского героя отображалась на миникарте, а самого героя видно не было.
Алсо, в Battlefiled 4, забавная фигня есть - ты стреляешь по противнику с танка, и совершенно отчетливо видишь, что снаряд мимо должен пролететь, однако, каким-то чудом урон наносится. Да и сама по себе, система расчета урона, при встрече снаряда и брони вообще работает, как китайский рандом - то четко попадаешь бронейбойным снарядом в борта техники под 90 градусов, но урон засчитывается мизерный (меньше чем при попадании по лобовой броне), то лупишь навскидку по лобовой броне - и снимается огромное количество урона. По вертолетам аналогично.
int пишет:
Также стоить учесть, что движение другого героя неравномерно, может он дернется и повернет в другую сторону или остановится.

Таки да. Это и есть самая главная проблема. Особенно если дистанция большая.



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 30 декабря 2015 16:49 · Поправил: v00doo
· Личное сообщение · #19

ELF_7719116 пишет:
Таки да. Это и есть самая главная проблема. Особенно если дистанция большая.

Ну тут вообще тогда нет смысла заморачиваться, тут играет фактор вероятности поворота героя, человек может сам мансануть а может нет, все зависит от его навыков да и реакции на событие, одни делают по десятку кликов, другие по одному.
Цель такого инжекта по идеи просто облегчить попадание, а не сделать его 100%, тут никак не выйдет постоянное попадание, ведь в конце концов играют роль задержки от сервера, все расчеты на клиенте будут с запозданием как ни крути.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 30 декабря 2015 19:54
· Личное сообщение · #20

ClockMan пишет:
Думаю отправляет

А причем тут Варфрейм? У доты гораздо хитрее разделение классов server-side-only (не отправляются сервером на клиент в принципе) и client-server (они называются network entities, и синхронизируется между сервером и всеми клиентами-игроками, HLTV, напротив, рассылает с задержкой по-умолчанию - защита от читерства путем второго компьютера и игрока-наблюдателя).


<< . 1 . 2 .
 eXeL@B —› Крэки, обсуждения —› выпилить Steam из игры Dota 2
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати