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

Лидеры

  1. keng

    keng

    Ветераны


    • Баллы

      3

    • Постов

      1 635


  2. Garik66

    Garik66

    Помогаторы


    • Баллы

      2

    • Постов

      5 750


  3. MasterGH

    MasterGH

    Ветераны


    • Баллы

      2

    • Постов

      2 999


Популярный контент

Показан контент с высокой репутацией 16.08.2015 во всех областях

  1. Baracuda, сигнатуру можно брать с любого участка, главное: 1. Сигнатура должна быть уникальна. 2. Повторяема, т.е. после перезагрузки игры, она должна быть той же самой. 3. Не обязательно, чтобы начало сигнатуры совпадало с первым байтом нужной тебе инструкции, ты можешь сделать сигнатуру, а потом добавить нужное кол-во байт к метке. Ну наверное ты видел такие скрипты, ну например вот известный скрипт из твоей же темы: [ENABLE]aobscanmodule(InfiniteCash,GTA5.exe,E2 48 83 C1 10 48 89 4C 24 10 8B 01 33 C9 89 44 24 08) alloc(newmem,$1000,"GTA5.exe"+C31565) label(code)label(return)label(go)label(michael)label(franklin)label(trevor) label(Odin) registersymbol(Odin)registersymbol(InfiniteCash)newmem:cmp [rcx+d4],'MONE'//Y_SPENT_IN_CLOTHESje franklincmp [rcx+134],'MONE'//Y_SPENT_IN_CLOTHESje michaelcmp [rcx+94],'MONE'//Y_SPENT_IN_CLOTHESje trevormichael:cmp [rcx+144],'LOTH'je gojmp codefranklin:cmp [rcx+e4],'LOTH'je gojmp codetrevor:cmp [rcx+a4],'LOTH' je gojmp codego:cmp byte ptr[Odin],1 jne code mov byte ptr[Odin],0 xor [rcx],rcx add [rcx],#100000 xor [rcx],rcx code:mov eax,[rcx]xor ecx,ecxmov [rsp+08],eaxjmp returnOdin: db 1 InfiniteCash+0A: // Вот что я имею ввиду, как видишь здесь добавляется 10 байт, чтобы попасть наjmp newmem // нужную нам инструкцию.nopnopnopreturn:[DISABLE]InfiniteCash+0A: // Вот что я имею ввиду, как видишь здесь добавляется 10 байт, чтобы попасть на // нужную нам инструкцию.db 8B 01 33 C9 89 44 24 08unregistersymbol(Odin) unregistersymbol(InfiniteCash)dealloc(newmem)
    2 балла
  2. [terminus]-------------------------------------------------------------------------------- Я начал писать курс статей, рассказывающих и показывающих про язык ассемблера с абсолютного нуля. Тут будет оглавление со ссылками на статьи. Оглавление: ---------- Часть 0. [Установка и настройка] Часть 1. [Пишем первую программу] Часть 2. [Как работает процессор и что такое регистры] Часть 3. [Знакомимся с отладчиком] ------------------------------------ Весь исходный код можно взять [тут]. Критику, отзывы, мольбы о помощи и пожелания можно оставлять в этой теме. --------------------------------------------------------------------------------[/terminus]
    1 балл
  3. Указатели я бы искал через два трейслога. 1. Ищешь адрес ХП 2. Ищешь инструкцию1 на зпись ХП, которые срабатывают один раз при уроне 3. Трейслог1 из глубины вверх от инструкции1 например на 5К инструкций до верхнего выхода из call 4. Дальше по трейс логу в глубину смотришь дизассемблер и ставишь на узлы F5, и смотришь чтобы не прерывалась игра. Как начала прерываться, то делаешь трейслог 2 уже с вхождением в глубину, сбора стека на 10К инструкции(или более) с условием прерывания на EIP==0xинструкции1 Ну дальше по трейслогу 2 составляешь указатель до статического адреса, правда не факт, что он будет. Может быть и так, что есть динамический список с указателями на структуры. Структуры могут иметь отличия между собой в данных. Может быть функция, которая по этому списку будет перебирать по отличиям определенные объекты. Например, функция может искать указатель на структуру по типу класса GameObjectsFindWithType<Type>(), а может проверить твой игрок это или чужой по строке GameObjectsFindWithTag(string tag) или числу... Все, что может быть у тебя это статический указатель на динамический список, а структуры в нем могут тасоваться как угодно. [[[статический адрес дин. списка]+N*0x4]+0x6c] = XP где N случайное Во всяком случае, предсказать что-то сложно. Надо садиться, да и искать
    1 балл
  4. [terminus]-------------------------------------------------------------------------------- Так. Во-первых, сигнатура - это набор байт, опкоды определенной последовательности инструкций. Что делает функция aobscan? По сути, делает она поиск подстроки в строке, возвращая адрес первого вхождения или 0. Ты можешь написать скрипт, который будет выполнять только набор вызовов aobscan, после чего у тебя будут адреса для каждой инструкции, адрес которой обнаружился или нет. После этого в скрипте, активирующем ту или иную опцию, можно проверить, не 0 ли находится по адресу, по которому лежит инструкция. Если 0 - значит aobscan сработала неудачно, если не 0 - значит все ок и опцию можно включить\выключить. Вообще, кстати, если у тебя хоть одна из сигнатур не найдется (результатом работы aobscan будет 0), то скрипт не выполнится, а следовательно и работать не будет. --------------------------------------------------------------------------------[/terminus]
    1 балл
  5. [terminus]-------------------------------------------------------------------------------- Функция aobscan просто ищет адрес по маске и записывает его в переменную, которую ты укажешь. В одном скрипте можно применять эту функцию сколько угодно раз, просто переменные назови разными именами. --------------------------------------------------------------------------------[/terminus]
    1 балл
×
×
  • Создать...

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

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