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

inaginary

Разработчики
  • Публикаций

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

  • Посещение

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

    10

inaginary стал победителем дня 11 февраля

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

Репутация

56 Rookie

4 Подписчика

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

  • Звание
    Продвинутый пользователь

Информация

  • Пол
    Женщина

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

539 просмотров профиля
  1. В статье нет примеров и видео, поскольку мне кажется тут не о чем больше рассказывать, (в отличии от FPU) 😀
  2. В данном руководстве описано как использовать xmm регистры, а так же некоторые команды. Список некоторых команд (напоминалка): О регистрах: Регистры в этих дополнениях сопроцессора очень похожи на основные, но в отличии от них могут содержать целых четыре элемента, и даже работать сразу со всеми четырьмя! Арифметические операции с регистрами: Все функции сложения, вычитания, и другие могут быть совершены только с регистрами. Такая инструкция сработает: addss xmm0,[MyLabel] А такая - нет. addss [MyLabel],xmm0 Потому следует все операции производить после записи регистров. Например, если необходимо прибавить что нибудь к переменной можно использовать такой код: movss xmm0,[MyLabel] //Записываем в xmm0 наше число addss xmm0,[MyAddValue] //Добавляем к нему другое movss [MyLabel],xmm0 //Записываем из xmm0 назад в число. Так же нужно помнить что регистры это не стек, и потому значения свои сохраняют после записи. Как уже было сказано выше, эти регистры могут содержать целых 4 элемента - работа с массивами: Массив должен состоять из четырёх элементов, например такой: MyMassiv: dd (float)2 dd (float)7 dd (float)29324.126 dd (float)8261.3 Что бы записать этот массив в xmm мы можем использовать следующий код: movups xmm0,[MyMassiv] После чего получим в xmm0 все четыре числа по порядку. Теперь мы можем сделать что нибудь с этим массивом, например умножить его на другой массив. К примеру вот такой: MyMassivMul: dd (float)1 dd (float)2 dd (float)0.5 dd (float)2 Умножаем: movups xmm0,[MyMassiv] //Загружаем наш массив movups xmm1,[MyMassivMul] //Загружаем массив на который умножим mulps xmm0,xmm1 //Умножаем movups [MyMassiv],xmm0 //Возвращаем в наш массив. После выполнения этого кода, массив примет такой вид: 2; 14; 14662,063; 16522,6. Так же можно вычитать, делить, находить корень, складывать, и многое другое.
  3. Всё не работает, например ты пустой адрес записываешь в ebx, после в [00000000](ebx) записываешь edx, и соответственно вылет. AOB - когда выбираешь как сделать инъекцию кода, есть выбор AOB. Это инъекция с поиском байт - CE ищет байты и после туда внедряет код. Лучше всего тебе пойти посмотреть самые начальные уроки. Какое название у игры?
  4. Для этого и существуют скрипты, берёшь какую нибудь инструкцию которая работает с твоим игроком, например с его здоровьем, типа такой Пример: mov [eax+123],ecx На неё делаешь скрипт, в скрипте создаёшь метку, вроде такого: Теперь, добавляешь в таблицу MyPlayer (в строку адреса вписываешь). В итоге получаешь при активации адрес своего игрока, и наплевать на обновления. (инъекцию AOB делать надо). Но учти, что инструкция должна работать только с твоим игроком.
  5. Создай скрипт типа такого: Всё, теперь ты можешь писать в newmem всё что хочешь, в пределах выделенного места. То есть например: А на счёт твоего кода, как бы там ни было, мне кажется ты записываешь в адрес переход по которому ничего не даст, то есть ведёт в никуда, попробуй сделать отладку. Мне не совсем понятно что ты пытаешься сделать, но если хочешь записать в тот адрес что то своё, то просто сделай: mov [ebp-10],edx //В место edx что то своё
  6. Возможность смены отладчика как раз и позволяет например обойти защиту игры от отладки. Если хорошо работал windows отладчик, то незачем менять на другой.
  7. Ты слишком банально себе это всё представляешь, тк ты искал адрес который (ключевое слово) храниться в другом, совсем не обязательно что там инструкции будут руководствоваться той же логикой что и предыдущие. Попробуй сделать скрипт и уже дальше смотри, если прямо проблема то повесь опять же скрипт на одну из первых инструкций и получай оттуда адрес игрока.
  8. Так может и не мучиться а написать скрипт который будет в метку записывать адрес игрока, а повесить его на эту инструкцию. Или же сделать запись того адреса в метку перед тем как он запишет сам себя. Вроде такого: your_code: mov [labelw],ebx code: mov ebx,[ebx]
  9. Всё правильно, там же есть элементы здоровья и тд? Игре же надо знать сколько и по какому адресу, что бы показать тебе на экран. Так что это то как раз не удивительно. На счёт отладчика, попробуй изменить тип в настройках.
  10. Заметь, дебагер показывает только конечный адрес, то есть после выполнения mov ebx,[ebx] он покажет тебе не нужное смещение, а твой же адрес. Потому перейди в отладчик - поставь бряк на этот адрес, и как только бряк поймает поток посмотри вправо - там появятся все регистры. Скопируй оттуда ebx, в нём должен быть правильный адрес. Это смещение +0. После можешь убрать бряк и запустить выполнение. Все нужные функции найдёшь в Debug.
  11. FreeCam - свободная камера, подразумевает возможность полёта камеры отдельно от объекта/персонажа и тому подобного, используется в самых разных целях, для обнаружения противников, для создания красивых снимков, для нахождения секретов и тому подобного. Принцип создания: Всё зависит от типа игры. Если реализован поворот камеры мышью - то данную функцию делать не нужно. Для перемещения камеры можно использовать самые разные функции, но я склоняюсь к полёту в ту сторону куда смотрит игрок. Для этого необходимо вычислить синус и косинус для поворота по горизонтальной, и синус для поворота по вертикальной оси. После их надо умножить на радиус, мы получим точку на сфере - это и будет вектор ускорения для камеры. Его следует добавлять к уже существующим координатам камеры, изменяя радиус мы можем изменять скорость. Для того что бы камера была "свободная", нужно записывать свои значения в координаты, а функцию которая записывает их в игре по стандарту - отключить. Более детально всё показано в следующем видео Создание свободной камеры на примере игры "WarThunder":
  12. Ставишь тип поиска Array of byte (Массив байт) ставишь "без разницы" в Writable и CopyOnWrite (синие квадратики вместо галочки), ставишь галочку hex у строки поиска, вставляешь массив и ищешь. Дам тебе ещё совет как там можно очень просто реализовать бесконечные патроны. Замени в своём скрипте ja Borderlands2.exe+A189C2 На jb Borderlands2.exe+A189C2 Только это еще сделает врагов бессмертными, и тебя 😃
  13. Да , вижу у тебя не пересекаются jmp. А так ты можешь сделать, только смотри что бы сигнатура осталась уникальной.
  14. Например у тебя в коде есть какая нибудь сигнатура допустим (случайные числа) 23 7B 26 22, CE ищет эту сигнатуру. У тебя есть ещё один скрипт, он при поиске использует её же. Первый скрипт изменяет сигнатуру своим jmp *название метки*. Например он меняет первые 2 байта. (23 7B). Тебе надо найти вторые 2 байта и туда поставить скрипт, но первые байты изменены. Вместо этих байтов ставишь ** ** 26 22. Но так сигнатура может потерять свою уникальность, потому смотришь что есть выше в отладчике - например A5. Добавляешь A5 ** ** 26 22. Проверяешь поиском - уникально - используешь. Но вообще не стоит делать 2 скрипта которые работают в одном месте, сделай всё в одном скрипте. И к тому же, у тебя один скрипт может перезаписывать кусок jmp от другого, скорее всего будет просто вылет программы.
  15. Найти сигнатуру для поиска вручную, байты которые изменяются можешь обозначить ? или *, тогда CE будет принимать любые байты там, но при этом ты должен сохранить уникальность сигнатуры.
×

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

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