Как ориентироваться в сложных программах(играх).

Тема в разделе "WASM.RESEARCH", создана пользователем Keks, 22 ноя 2019.

  1. Keks

    Keks New Member

    Публикаций:
    4
    Регистрация:
    19 фев 2018
    Сообщения:
    8
    Я имею ввиду игру типа EvE Online.
    Я не могу установить брейкпоинт на нужное событие,просто ставя на паузу в нужный момент я попадаю в библиотеку отвечающую за звук,за отрисовку окон,за что-то ещё но только не на нужное мне событие(MessageBox о том что нельзя зайти с двух аккаунтов на одном компьютере).
    Как мне быть?API тоже не отследишь,их много-ОЧЕНЬ много и на все бряки не поставишь.:boredom:
    В общем,мне нужна помощь или руководство,как работать с крупными программами ака играми.:dash1:
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Скорей всего ты туда попадаешь из-за исключений, которые там происходят, настраивай в отладчике ignored exceptions.
     
  3. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    Шедевр! :clapping::flood::help:
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Keks,

    > API тоже не отследишь,их много-ОЧЕНЬ

    Зачем все, вам же одна нужна заранее известная.
     
  5. Keks

    Keks New Member

    Публикаций:
    4
    Регистрация:
    19 фев 2018
    Сообщения:
    8
    Вот поконкретнее что при создании этого окна.
    Поток AD8 создан, вход: ucrtbase.00007FFFF5890E30
    Поток 1828 создан, вход: ucrtbase.00007FFFF5890E30
    Поток 9FC создан, вход: ucrtbase.00007FFFF5890E30
    Поток 1264 создан, вход: ucrtbase.00007FFFF5890E30
    :
    Ставлю бряк на первое
    Код (ASM):
    1. 00007FFFF5890E30 | 40:53                    | push rbx                                |
    2. 00007FFFF5890E32 | 48:83EC 20               | sub rsp,20                              |
    3. 00007FFFF5890E36 | 48:8BD9                  | mov rbx,rcx                             |
    4. 00007FFFF5890E39 | 48:85C9                  | test rcx,rcx                            |
    5. 00007FFFF5890E3C | 0F84 AC0C0300            | je ucrtbase.7FFFF58C1AEE                |
    6. 00007FFFF5890E42 | E8 4DD1FEFF              | call ucrtbase.7FFFF587DF94              |
    7. 00007FFFF5890E47 | 48:8998 C0030000         | mov qword ptr ds:[rax+3C0],rbx          |
    8. 00007FFFF5890E4E | 48:8D0D 2BAD0C00         | lea rcx,qword ptr ds:[7FFFF595BB80]     |
    9. 00007FFFF5890E55 | E8 36E4FFFF              | call ucrtbase.7FFFF588F290              |
    10. 00007FFFF5890E5A | 8BC8                     | mov ecx,eax                             |
    Дальше долго иду по системному стеку и нахожу что RtlGetCurrentServiceSessionId вызывается
    Код (ASM):
    1. 00007FFFF79A50A5 | E8 06AC0100              | call <ntdll.RtlGetCurrentServiceSessionId>    |
    2. 00007FFFF79A50AA | 85C0                     | test eax,eax                                  |
    3. 00007FFFF79A50AC | 0F85 568A0800            | jne ntdll.7FFFF7A2DB08                        |
    Судя по регистрам там идёт перечисление процессов,всех которое есть в системе!
    Вроде неплохой вариант,но как это патчить?Можно попробовать сделать встроенный код
    чтобы нужный exe'шник пропускался при перечислении но я пока не знаю как это сделать.:dntknw:
     
  6. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Кто понял, что делает ТС и что хочет сделать?
     
  7. Keks

    Keks New Member

    Публикаций:
    4
    Регистрация:
    19 фев 2018
    Сообщения:
    8
    Я хочу обойти вот это окно в игре и запускать несколько копий игры сразу.:beach:
    [​IMG]
     
  8. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Невозможно зайти на одном компьютере или одновременно с разных компьютеров?
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Keks,

    Что бы копии запускать нужно вначале найти все глобальные(именованные) обьекты, файлы например или какие то иные ресурсы. Если апп может работать как одна копия, то не с проста. Если два экземпляра будут выполнять асинхронный write-доступ с общему обьекту, это сломает их.
     
    Keks нравится это.
  10. Keks

    Keks New Member

    Публикаций:
    4
    Регистрация:
    19 фев 2018
    Сообщения:
    8
    На одном компьютере.
     
  11. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    А что такое "Омега-статус"? Это типа премиум пакета?
     
  12. Keks

    Keks New Member

    Публикаций:
    4
    Регистрация:
    19 фев 2018
    Сообщения:
    8
    Всё это прекрасно работает в платном режиме,запускай сколько хочешь окон.
    Это искусственное ограничение в игре,для заработка денег.:cray:
    --- Сообщение объединено, 22 ноя 2019 ---
    Да,около 500 рублей стоит в месяц.:dash1:
     
  13. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Это точно? Вы проверяли? Потому что если при запуске на разных машинах вылетает то же сообщение то идет отлуп от сервера, и вы ничего с этим не сделаете. По крайней мере, локально.

    Если же действительно проверяется наличие запущенной копии на одном компе, можно начать с отслеживания появления окна. Ловите что-нибудь вроде ShowWindow. Потом смотрите стек ("k") и ищите процедуру, в которой происходит ветвление.
    На самом деле это способ вероятно не сработает, учитывая как раз сложность приложения.

    Поэтому придется отталкиваться от процедуры запуска (найти ее может помочь например ProcMon со stack view) и трассировать, пока не найдете тот вызов, который приводит к появлению окна. Дальше уже идти "наверх", трассируя по очереди все вызовы, пока опять таки не придете к необходимому ветвлению.
    --- Сообщение объединено, 22 ноя 2019 ---
    Процедура запуска и появление окна могут выполняться в разных потоках и сообщаться посредством, например, глобальной переменной, объекта синхронизации или исключения, имейте это ввиду.
     
    Keks нравится это.
  14. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    На мой взгляд это тоже дорого, как абонентка за пользование игрой. Игроделы-локализаторы народ жадный и противный.
    Борись, что могу сказать, только для достижения цели необходимы знания программирования, желательно высокого уровня...( Мне бы их...:crazy:)
     
    Keks нравится это.
  15. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Keks,

    А почему ты решил что отладчик этом какой то способ решения, какой то инструмент для работы с тяжёлыми апп. Это твоя ошибка, отладчик это системный инструмент и он предназначен для совсем иных задач. Фишка в том, что пока ты не освоишь этот, тебе более сложные не нужны.
     
    Последнее редактирование модератором: 23 ноя 2019
  16. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Это такое же, как "омега самец", но виртуально.
     
  17. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    M0rg0t,

    Антиспам боты блокируют отправку почты на яндексе, впрочем кому она нужна.
     
  18. Warsong

    Warsong New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2019
    Сообщения:
    14
    Keks, не тратьте время ,любой патч будет рано или поздно зафиксирован ,аккаунт залочат перманентно.
    --- Сообщение объединено, 23 ноя 2019 ---
    Можно запускать каждую копию с отдельной виртуальной машины с отдельным аккаунтом через отдельный договор с провайдером или vpn,но наверно оно не стоит того.
     
  19. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Keks, тебя просто забанят == лучшая борьба против отладчика есмь многопоточность + на стороне сервача могут отмечать аномальные фризы клиента. по сути, надо клиентскую часть разобрать и прошить в оффлайне. Однако, толк от всей сей мутотени сомнительный == главная инфа по акку лежит в бд на сервачах и именно сервачная часть отловит подозрительные девиации клиента. если ты хочешь сделать бота для геймплея, то можно снимать всю нужную инфу с экрана (то бишь нужна эдакая нейросеть) + имитировать клаву и мышь. но и тогда тебя спалят на скорости реакции + бд так же может хранить показатели твоей реакции на прошлых играх и сильный буст сих показателей вызовет к тебе массу вопросов. правда, в плане отладки есть ещё один подход == отзеркалить протокол общения клиента и сервача == записать траф игры, а потом этот траф скармливать клиенту в оффлайне для процесса отладки. Впрочем, это жесткачная мутотень == вариант с нейросетью более валидный :)
     
  20. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    этого достаточно, надо только ВМ нормальную и машину, которая это потянет