eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

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

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

Ранг: 85.4 (постоянный)
Статус: Участник

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

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


Ранг: 1963.6 (!!!!)
Статус: Модератор
retired

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

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

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


Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 24 декабря 2015 20:15 New!
Цитата · Личное сообщение · #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 - эт чё, типа если гравитацию поставить сотку, то в доте, как и в контре: по всей карте будут летать герои??!

Ранг: 75.3 (постоянный)
Статус: Участник

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

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

Ранг: 226.2 (наставник)
Статус: Участник

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

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


Статус: Пришелец

Создано: 25 декабря 2015 11:26 New!
Цитата #7

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

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

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

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

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

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

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

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

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

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

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

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

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

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

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 29 декабря 2015 20:40 · Поправил: 2 января 2016 13:39 ELF_7719116 New!
Цитата · Личное сообщение · #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. }

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

Ранг: 75.3 (постоянный)
Статус: Участник

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

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

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

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



Ранг: 1091.6 (!!!!)
Статус: Участник

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

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


Ранг: 512.2 (!)
Статус: Участник
оптимист

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

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

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

Ранг: 226.2 (наставник)
Статус: Участник

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

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

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

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

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

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

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

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

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


Статус: Пришелец

Создано: 30 декабря 2015 11:25 New!
Цитата #16

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

нейтралы)

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

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

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


Ранг: 512.2 (!)
Статус: Участник
оптимист

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

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

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

Ранг: 366.0 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

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

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

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

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

Ранг: 75.3 (постоянный)
Статус: Участник

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

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

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


Статус: Пришелец

Создано: 30 декабря 2015 19:54 New!
Цитата #20

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

А причем тут Варфрейм? У доты гораздо хитрее разделение классов server-side-only (не отправляются сервером на клиент в принципе) и client-server (они называются network entities, и синхронизируется между сервером и всеми клиентами-игроками, HLTV, напротив, рассылает с задержкой по-умолчанию - защита от читерства путем второго компьютера и игрока-наблюдателя).
<< . 1 . 2 .
 eXeL@B —› Крэки, обсуждения —› выпилить Steam из игры Dota 2

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS