Перейти к содержанию

partoftheworlD

Помогаторы
  • Публикаций

    2 029
  • Зарегистрирован

  • Посещение

  • Победитель дней

    106

partoftheworlD стал победителем дня 15 июня

partoftheworlD имел наиболее популярный контент!

Репутация

604 True Gamehacker

Информация о partoftheworlD

  • Звание
    инженер, проектирующий свалки

Посетители профиля

8 578 просмотров профиля
  1. Почему бы не воспользоваться гуглом?
  2. Ну хук вешают обычно опкодом E9(jmp), ведь E8 это call, который сохраняет в стек позицию для возврата, разница у них не большая, но именно она может стать причиной краша, а чтобы такое заметить под отладкой нужно быть сверхвнимательным. __declspec(naked) void Ammo() { __asm { mov AmmoBase , esi MOV [ESI + 0x1414], 0x63 jmp [OrigAmmo] } } если единичная инструкция, то __declspec(naked) void Ammo() { _asm mov AmmoBase , esi } Оно и будет нормально работать, просто к чему лишние байты в функции после компиляции. Да и это написал следуя своему опыту, когда я учился вешать хуки, то без такого атрибута у меня приложения крашились, но раз работает, то хорошо.
  3. Тут не правильно объявлена функция с асм вставкой, нужно использовать голую декларацию __declspec(naked) void CallHook() Чтобы для твоей функции компилятор не генерировал пролог и эпилог, а использовать массив байт это изврат, когда есть асм вставки, таким только на C# занимаются😁 И кстати, используя опкод E8 хук не крашит приложение?
  4. Даже удивительно почему никто не сделал бессмертие для этой игры, ведь все достаточно просто. Раз у нас нет индикатора здоровья, значит необходимо найти триггер, который бы говорил "вот тебе дали по лицу и ты умер", а значит нам нужны *эффекты смерти и грустная музыка*. Если подумать из всего, от чего мы можем оттолкнуться стремясь к бессмертию, использовать сможет только координаты. Итак, план действий: Находим координаты Находим участок кода отвечающий за коллизию Делаем бессмертие за счет отключения коллизии, фильтруя для чего нам нужна коллизия, а для чего нет или переходим к пункту 4. Делаем бессмертие за счет нахождения триггера, изменяя условный переход, который больше не будет выводить сообщение о смерти и грустную музыку. Бессмертие за счет отключения коллизии это самый простейший способ, но он для любителей поглазеть в структуры игрока, npc, стен, в поисках их уникальных ID, чтобы написать хороший фильтр. Бессмертие за счет изменения триггера это немного дольше, плюс могут быть проблемы, если игра использует скрипты, то скорее всего после отключения триггера и когда нам дадут по лицу мы получим софтлок и тут уже спасет только перезапуск. Находим координаты, ставим бряк на доступ, необходимо немного побегать, чтобы отделить инструкции для передвижения от инструкций работающими с расчетом коллизии. До красной линии это все инструкции которые работают с персонажем при движении, зеленым помечены инструкции, появляющиеся после того как нас ударили. Как только переходим по самой первой инструкции после удара, видим такой интересный код. В общем здесь и происходит вся магия, загружаются значения, загружается коллизия предметов и npc, так же значения коллизии к пример стен статичны 1.875, немного пореверсив, можем написать скрипт, но чтобы он работал как бессмертие, его необходимо будет дописать с учетом состояния врага или же дистанции от врага, чтобы коллизия отключалась когда враг собирается нас атаковать. Это нужно для того чтобы игра не крашилась при переходе между локациями, т.к. при отключении коллизии игра не будет знать где можно спавнить игрока, а где нет. А вот и функция расчета коллизии, входные данные для функции это размер коллизии предметов, текущие координаты npc/врага, а так же скорость: Ну вот и все, небольшая демка и бонус будут чуть ниже, а так же скрины показывающие, что будет если изменять размер коллизий. По времени на взлом ушло около 20 минут, самое сложное было найти координаты. 😁 Если будет интерес, то напишу ещё одну статью в которой будем рассматривать бессмертие с помощью второго способа, а т.е. поиск триггера который бы говорил "вот тебе дали по лицу и ты умер", а значит нам нужны *эффекты смерти и грустная музыка* Демо 1: Демо 2: Размер коллизий:
  5. partoftheworlD

    Trainme от Dark Byte

    Ерунда, вот сделаешь бессмертие в этой трейнми тогда поговорим. Настоящий папка выглядит как я когда только начинал взлом игр.😁 Cпециально для тебя видео записал, так что учись пока я молод. Как два пальца почесать.
  6. partoftheworlD

    Trainme от Dark Byte

    Я все прошел в первый день релиза CE, понравился 3-й уровень только. На 3-м пришлось отключать коллизию и увеличивать высоту прыжка, чтобы пройти.
  7. Накидал небольшой скрипт, который выполняет тоже самое что и плагин FunctionStringAssociate, просто потому что, для новой версии плагин часто вылетает, нет кроссплатформенности, его нет под x86, для того чтобы был необходимо качать несколько библиотек, какие-то файлы и настраивать VS, никаких альтернатив не нашел, а также скрипт наверняка будет работать после следующих обновлений, даже если вдруг Hex-Rays снова решат обновить API. Сейчас это просто скрипт, в дальнейшем прилеплю меню и доступ из вкладки плагинов и увеличу скорость работы (как разберусь с новомодными модулями, которые нагуглю). Если кто-то будет пользоваться скриптом, то пожалуйста пишите, если возникнут какие-то проблем, а баги сразу на гите оформляйте. Для чего нужен? Плагин пригодится для беглого анализа всех функций в виртуальной таблице, при рассматривании скриптовых движков, может помочь найти всякие функции, относящиеся к обработке скриптов скриптовым движком игры, ну и конечно же помогает восстановить виртуальные таблицы из библиотеки игры с подписанными функциями MacOS в библиотеке Windows. Как пользоваться? Кидаем в иду нужный нам файл, так же кидаем файл с плагином в папку plugins Заходим в пункт Edit/Plugins будет надпись FunctionStringassociate тыкаем на неё. Как только запустится скрипт в окне Output window будет надпись Launching По завершению анализа в том же окне получаем информацию о том сколько было просканировано функций и добавлено комментариев. Возможно работоспособность может зависеть от степени анализа файла т.е. некая зависимость от количества анализированных функций относительно всех возможных Вроде бы все проверил, но так как скрипт писался всю ночь и день тестировался, то могут быть баги, которые я упустил. Demo: https://github.com/partoftheworlD/IDA7py_FunctionStringAssociate/ Обновления
  8. Значение можешь обычным поиском найти изменяя значения на любое другое, не обязательно чтобы консольная команда работала. А если интересует поиск консолькных команд, тогда находишь буфер в котором хранятся консольные команды, ставишь бряк на запись в памяти примерно высчитав через сколько байт заполняются команды в истории, получаешь инструкцию, реверсишь пока не поймешь как устроены и работают консольные команды, вот темы на по читать. и
  9. Т.е обычные вещи для современной ОС и командной строки. И опять C#, что за поколение С# -ов😁
  10. partoftheworlD

    Секунда юмора :)

    После слова лопата
  11. Увеличь максимальное значение смещения до 8к т.к. только для указателя на вложенную структуру с игроком смещение 4300+, а у тебя 4096 стоит в настройках. Эта игра использует для вычисления каких-либо переменных по смещениям, но базовых адресов всего несколько десятков, т.е от них и высчитывается смещение на патроны к примеру так что думаю средний уровень указателей 5-8 будет.
  12. Только такие http://pwnable.kr/play.php
  13. http://pwnadventure.com В комплекте с игрой идут отладочные символы pdb файл, лучше без него реверсить, но с ним более понятней, для новичков самое то. Эта игра больше походит на небольшой трейнми который содержит в себе все основные задания для практики новичкам от поиска значений до восстановления и генерации алгоритмов ключей к сундукам, отключения коллизии и т.д. Либо любую игру которая вышла на Windows и MacOs, в играх под мак часто остаются все функции в игре подписаны, я так ревершу Dying Light
  14. Сложную игру взял для тренировок, ну да ладно. Если бряки не срабатывают, то проверяй настройки CE, если с настройками все хорошо ставь бряки в памяти на запись/доступ, либо отлаживай чем-нибудь другим, а не стандартным CE отладчиком. виртуальные таблицы использовать?
×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.