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

Xipho

Администраторы
  • Постов

    4 022
  • Зарегистрирован

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

    42

Сообщения, опубликованные Xipho

  1. В 05.07.2022 в 15:47, DragonForce сказал:

    Ну я же говорю, очень информативный ответ, на одном уровне с популярностью данного форума.

    Всегда проще обвинить кого-то, чем признать, что допустил оплошность в формулировке вопроса )))

  2. 11 часов назад, HomelessPsychopath сказал:

    Так, а можно по подробнее?

    Каждое изменение здоровья (срабатывание инструкции) связано с какими-либо действиями. Если прореверсить код в обратную сторону от инструкции, которая пишет в адрес здоровье, можно найти инструкции, которые вычисляют урон, наносимый игроку/неписю. Универсального рецепта нет, для каждой игры/движка это реверсится индивидуально. Главное - понимание, что новое значение здоровья должно как-то вычислиться. В случае нанесения урона это значения вычисляется вычитанием величины урона из текущего уровня здоровья. Найдя это вычитание (на самом деле там может быть не только вычитание, это лишь пример), ты найдешь величину урона. Исследуя код, как формируется величина урона, ты найдешь инструкцию, где можно будет подставить свой множитель. Ну или, найдя,  где из здоровья вычитается урон, в том месте урон многократно увеличить - этого будет вполне достаточно для OHK.

  3. 31 минуту назад, DragonForce сказал:

    но я не совсем знаю как правильно написать

    Ну так вот так и написать. Выделить память через alloc, назначить метку, в эту метку прописать значение, как мы прописывали в куче уроков, только вместо числа будет что-то вроде db 'Text',0. А дальше либо mov edi, offset label, либо lea edi, [label]

  4. Привет, в регистре EDI не может храниться текст. В нем может храниться только указатель на адрес памяти, где лежит текст. Соответственно, ты можешь записать свой текст в память, и в EDI записать адрес твоего текста.

  5. 21 час назад, Antonshka сказал:

    Мне был интересен сам подход

    Блиттинг с серой маской.

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

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

    Впрочем, картинку необязательно грузить в вышеупомянутую секцию, так как есть WinAPI функции для получения битов картинки в массив для последующей быстрой обработки

  6. Есть урок по поиску шифрованных значений, там через экранное я выхожу на истинное. И есть еще несколько уроков по отделению игрока от врага. В одном из них тоже есть прием выхода на истинное через экранное значение.

  7. Нет, это так не работает. Да и рыть кучу инфы тебя никто не заставляет. У нас на канале и в группе ВК есть плейлист "Взлом игр от А до Я". В нем сжато рассказываются почти все аспекты взлома игр и написания скриптов в СЕ.

  8. В 22.05.2022 в 6:15 PM, botmaker сказал:

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

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

  9. В 22.05.2022 в 4:32 PM, MIM сказал:

    Вот скрипт infinite health я хз что отсюда брать что бы потом это вписать в код на шарпе

    Значит, придется изучить СЕ и ассемблер до полного понимания, что делается в скрипте. Когда будет понимание, тогда сразу станет понятно, что брать, чтобы вписать в код на шарпе.

  10. В 26.04.2022 в 12:41 PM, Exile сказал:

    Как теперь починить скрипт?


    Без понимания, как это работает - никак не починишь. Массив, что ты указал, это определенный набор байтов, который характерен для определенных инструкций процессора. Поскольку после обновления игры ты не можешь найти этот массив, мы можем говорить о том, что код изменился. А это, в свою очередь означает, что нужно с нуля находить нужный код. Ну или попробовать взять часть массива, которая отвечает за коды инструкций без конкретных адресов, и поискать с маской. Но, опять же, без понимания, что это, и как делается, шансов очень мало.

  11. Конкретизирую:

    1. Берешь игру (любую сингловую)

    2. Ставишь перед собой цель (сделать в игре бессмертие, бесконечный прыжок, бесконечные патроны, бесконечные характеристики, что угодно)

    3. Реверсишь.

    4. Реализуешь цель. 

    5. PROFIT!!!

  12. 2 часа назад, imaginary сказал:

    важно то что если писать например (float)2.56, получится к примеру 2.559999943, при этом в игре если было тоже самое значение - 2.559999943

    А какова вероятность, что в игре будет такое же значение? В общем, почитай теорию про хранение чисел с плавающей точке в памяти компьютера, не буду спорить, не вижу смысла одно и то же обсуждать.

     

    2 часа назад, imaginary сказал:

    я много раз сравнивала float

    Это не значит, что ты делала это правильно, если ты сравнивала с помощью cmp. cmp допустим ТОЛЬКО если сравнение на больше/меньше делается. Но никак не на равенство.

  13. 6 часов назад, imaginary сказал:

    Не правда, float можно так же сравнивать cmp, например:

    Почитай про точность чисел с плавающей точкой, далее почитай про хранение и интерпретацию таких чисел в процессоре, далее почитай, почему может внезапно получиться при записи в переменную 50.00, а при чтении уже 50.0000000000000000000000000000000002, и затем почитай, как в этом случае сработает сравнение cmp

     

  14. В 13.04.2022 в 8:43 PM, Mikhailovich сказал:

    Что мне лучше использовать, есть ли какая-то принципиальная разница между этими методами?

    Используй любой из методов, который будет работать у тебя в твоем конкретном случае.

     

    В 13.04.2022 в 8:43 PM, Mikhailovich сказал:

    Что использовать при написании скрипта, если у меня тип адреса - Double?

    Числа с плавающей точкой двойной точности, как и обычные числа с плавающей точкой (float) надо сравнивать через определенные инструкции FPU или XMM. Инструкция cmp подходит только для целых чисел. Ты можешь попытаться сравнить hex представление, но, учитывая способ хранения типов double и float, вероятность срабатывания такого сравнения невелика.  

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

×
×
  • Создать...

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

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