Возможно ли взломать браузерную игру?

Тема в разделе "WASM.BEGINNERS", создана пользователем Derec, 4 фев 2011.

  1. Derec

    Derec New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    10
    Доброго времени суток! У опытных людей прошу совета. Вопрос возможно несколько странный, но мне нужны ваши точки зрения.
    Есть браузерная игра. Заметил, что во время ведения боя, данные не отсылаются на сервер, то есть весь процесс боя лежит на "локальном" движке. Как думаете реально ли сделать подмену нужного значения атаки (для примера) на свое?

    Учитывая, что сам клиент игры зашифрован (скрыта EP, еще возможно какие-то шифровки секции импорта и т.п).
    Зарание благодарен за помощь..
     
  2. AndjellaArtavazdovna

    AndjellaArtavazdovna New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    615
    Derec
    На счет именно браузерных игр ничего не знаю,но вообще
    Если игрушка запакована,распакуй так как в тьюторах говорят и напиши трейнер - такой ерунды в сети навалом.
     
  3. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Уважающая себя браузерная игра (да и вообще сетевая) ничего отсылать, кроме действий игрока, не должна. Все расчеты должны происходить на сервере. Иначе естественно можно сфальсифицировать данные. Поэтому, может потому и заметили, что ничего не отсылается? Зато в обратную сторону, с сервера, присылается наверняка ;)
     
  4. Derec

    Derec New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    10
    Спасибо за отклик!
    Вот такая ситуация: Я начинаю бой. На серевер отсылается пакет, в нем ID моба, мое ID, и хеш функция для аутентификации боя. Потом, выделяется отдельный Thread по бой и никаких пакетов на сервер не отсылается.. Ну то есть я наношу удар, а клиент ничего не отсылает. Лично я пришел к выводу, что это просто в клиенте хитро зашифрованы адреса, ведь есть какие-то неявные вызовы?
    Вот еще нюанс: нахожу значение очков жизни у моба. Изменяю его на нулевое. Моб пропадает, а мне продолжают наноситсья удары. Все такие это может быть связано с сервером или в клиенте можно это реализовать так?
     
  5. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    FatMoon
    Вообще-то можно прислать с сервера начальное значение для генератора псевдослучайных чисел, который будет использовкаться для выбора ответной стратегии и/или вычисления размера выигрыша за раунд/удар, а в конце боя просто отослать на сервер выбранные игроком ходы, чтобы сервер мог их проверить(или можно отдать их на проверку нескольким другим клиентам). Недостаток тут только в том, что клиент может проверить несколько стратегий боя и выбрать наилучшую, но в некоторых играх это может и не дать существенных бонусов.
     
  6. jabocrack

    jabocrack New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    96
    Да. ) Если вычисления происходят тока на твоем компе.
    ID моба отсылается, чтобы потом, если твой персонаж его победил, удалить его с локации для других игроков. Сервер ждет окончания боя и потом записывает результат в БД по твоему ID. По -моему, так. А как на деле, не знаю.
     
  7. jabocrack

    jabocrack New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    96
    Может это связано с многопоточностью кода?
     
  8. Derec

    Derec New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    10
    Это понятно. Видите в чем загвоздка, что когда я изменяю значения в игре, урон, жизни моба я их могу видеть, но потом они становятся такими как были ( словно по таймеру). Казалось бы сервер проверяет и их правит, однако снифер говорит что ничего не принимается и не отправляется...

    100% , что под бой выделяется отдельный поток, в нем все вычисления происходят. Когда дизассамблировал заметил, что адреса инструкций все время меняются... Есть способы это побороть? или весьма проблематично?
     
  9. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Black_mirror
    Теоретически наверно возможно. Но...:

    Derec
    Ну и фиг с потоками, раз вы не знаете, что там происходит :) В момент, когда по вашему уже ничего не передается, выдерните витую пару из сетевой карты - дешево и сердито. Если бой продолжится, значит что-то вроде теории Black_mirror. А если таймаут и "сервер не отвечает", то все-таки во втором потоке что-то передается на сервер, просто вы это не поймали. В 1-м случае есть отличные от 0 шансы исполнить желание
     
  10. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Потому что ты по сути его и прячешь.
    У него жизней нет, а события смерти тоже не было.
    Событие смерти - скорее всего уменьшение здоровья с ненулевого значения до нулевого (именно событие изменения значения).
    Попробуй сопернику поставить минимально возможное здоровье (1 например) и потом вынести одним ударом.
    Если поможет - значит я прав. Если нет - надо копаться.
     
  11. Derec

    Derec New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2011
    Сообщения:
    10
    Спасибо, попробуй, доложу о резульатах!
     
  12. mox

    mox New Member

    Публикаций:
    0
    Регистрация:
    31 май 2009
    Сообщения:
    3
    а что за игра то, урл можно в личку?
     
  13. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    В той или иной степени получить определённое преимущество в любой сетевой игре посредствам читерства (будь то взлом клиента, патчинг каких то параметров, и.т.д и.т.п, вобщем чего угодно) можно. Вопрос лишь в том сколько времени будет потрачено на реверс клиента, изучение протокола, выявление багов\уязвимостей и.т.п, и насколько весомое преимущество это в конечном итоге даст. В 50% случаев игра просто не стоит свеч.
    Ну а если поломать и внаглую зачитерить не получится, то на крайняк чтобы уж не обламываться можно автоматизировать процесс прокачки написав бота. Или забить нафиг на игру и не тратить своё время попусту :)
     
  14. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    128
    ...как то не в тему форума: крушить, ломать..
    Может лучше учиться созидать?
     
  15. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    это ты топикстартеру скажи
     
  16. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Можно предположить, что код отвечающий за бой идентичный у клиента и у сервера. И если для инициализации рандома использовать одно и тоже число, то отсылать данные нет никакой необходимости. Можно делать вид, что всё общитывается на клиенте. В общем, смотреть надо. Хотя данная схема тоже уязвима....
    Значит не то, что надо нашли....
    Посмотрите на код, не так уж и сложно должно быть.
     
  17. nnovgorod

    nnovgorod Людмила

    Публикаций:
    0
    Регистрация:
    13 фев 2011
    Сообщения:
    1
    Адрес:
    Нижний Новгород
    можно всё!
     
  18. playmaker

    playmaker New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2011
    Сообщения:
    1
    самый лучший ответ ) сорри за оффтоп - улыбнуло - прям как Дворкин )
     
  19. jaga

    jaga Дмитрий

    Публикаций:
    0
    Регистрация:
    25 окт 2008
    Сообщения:
    33
    Адрес:
    Пермская обл.
    Я уже сталкивался с подобным. при созданнии боя финал уже известен. т.е. клиент на сервер свой ид и моба а сервер в ответ добро на бой и то кто выиграет, а на стороне клиента идет бой результат которого уже занесен в базу данных на сервере.
    ну вот как то так)
    короче ищите другие способы
     
  20. alexshikh

    alexshikh Александр

    Публикаций:
    0
    Регистрация:
    8 мар 2011
    Сообщения:
    1
    Адрес:
    Киров
    Я думаю, нельзя, ведь вся информация хранится на сервере.