• Как связать фронт на React и бэкенд на ASP.NET, при условии, что и фронт и бэк представлены как 2 раздельных проекта?

    Ничего особенного для связи не нужно.
    Фронт скорее всего запускается через webpack-dev-server - в него можно через переменные среды прокинуть адрес бэкенда.
    На проде фронт будет раздаваться, скорее всего, с nginx, так что никакой параметр прокинуть нельзя, зато можно обращаться к тому же домену, на котором сидит и фронт (делать запросы типа fetch("/api/something")) - и уже на стороне nginx разруливать.
    Ответ написан
    4 комментария
  • Как прослушивать бекэнд со стороны клиента?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Самый простой способ это short polling - опрашиваем регулярно APIs на предмет новых данных.
    Чуть посложнее - Long polling - это тоже самое, но тайм-аут дольше (обычно порядка 20с, золотой стандарт)
    Еще усложняем - websocket
    Еще более интересно - push notifications

    Со стороны сервера в любом случае надо генерировать какие-то события или уведомления и хранить для каждого пользователя чтобы клиент мог их получать. Тут подойдет как таблица так и очереди (message broker)
    Ответ написан
    4 комментария
  • Как прочитать указатель из памяти чужого процесса?

    TrueBers
    @TrueBers
    Гуглю за еду
    Хватит плодить вопросы. Ответ на них не поместится на десяток страниц. Почитай лучше про адресацию памяти, что такое абсолютный адрес, относительный, что такое базовый адрес процесса, что такое рандомизация базового адреса. Просто так взять и прочитать память не получится.

    1. Этот адрес работает только для текущего процесса.
    2. Во-вторых, он будет другим при каждом запуске и выделении памяти из кучи.
    3. Он так же может меняться из-за ASLR

    Чтобы докопаться до реальной структуры данных с информацией о персонаже, нужно найти то место в коде, где эта структура выделяется на куче. Т. е. там должно быть что-то типа
    CharInfo info = new CharInfo();
    (_thiscall) CharInfo::CharInfo(info)

    Вот этот кусок кода тебе нужно найти, только так ты сможешь определить статическое место, откуда потом уже будешь плясать. Для поиска кода нужно знать хотя бы основы Ассемблера. Поможет в этом декомпилятор IDA Pro с плагином Hex-Rays.
    Но и этих мест может быть не одно, а десятки и сотни в случае с шаблонными классами и функциями. Тут уже нужен отладчик, чтобы поставить точки останова на чтение или запись памяти, и от них уже отталкиваться.

    Обычным чтением из памяти ты ничего не добьёшься, чтобы пойти по цепочке вызовов с необходимым адресом, тебе нужно самому внедрять свой код в клиент игры, либо пользоваться фреймворками для динамической инструментации, например, DynamoRIO, Intel PIN, Frida.

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

    Начать можно, кстати, с курса Рикардо Нарвахи "Введение в крекинг с нуля, используя OllyDbg". Это огромный курс статей, в которых разбирается всё, что нужно для понимания основ. Там 50 с чем-то глав различной сложности, погугли. Есть ещё на ютубе целый плейлист с видео-разборами этого курса.
    Ответ написан
    Комментировать