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

Лидеры

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

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

  1. Ну что можно сказать!!! 1: Находишь адрес жизней своего юнита допустим, делаешь бряк на запись в этот адрес.2: Создаешь авто-скрипт на ту инструкция которая появиться. Типо такой mov [esi+24C],eaxВот пример, метку exit я убрал, она просто не нужна: [ENABLE]Alloc(newmem,128)Label(returnhere)Label(originalcode) newmem: originalcode:mov [esi+24C],eaxjmp returnhere GAME.EXE+12345678:jmp newmemnopreturnhere: [DISABLE]Dealloc(newmem)GAME.EXE+12345678:mov [esi+24C],eax 3: Находишь адреса 2-3 юнитов врага.Как найти адреса жизней врагов?В отладчике жмёшь правой кнопкой мыши на брякнутую инструкцию и выбираешь:"Найти адреса, получающие доступ к этой инструкции". Появится окошко для адресов.После этого ударь по одному разу 2 врагов. И в этом окошке появиться адреса врагов.Добавьте их в список, двойным нажатием левой кнопки мышки.4: В отладчике жмёшь на "Инструменты > Анализ данных/Структур" появится окно, в этом окнедалее жмёшь "Файл > Добавить новую группу" штуки 2 для врагов, поскольку одна будет уже для тебя. 5: В первую группу вбиваешь свой адрес жизней юнита, типо так 12345678-24C24С - Это смещение в брякнутой инструкции к динамическому адресу.Ну и врагов адреса также делаешь в 2 и 3 группу заносишь.Во второй группе где адрес врага, жмёшь правой кнопки мышки и выбираешь "Изменить группу"далее в новом окошке выбираешь группу номер 3 и подтвердить, то есть адреса 2 врагов будут в одной группе.Потом в окне "Анализ структуры" жмёшь на "Структуры > Определить новую структуру" и жмёшь: "Подтвердить > Да > Подтвердить" после этого появиться смещения, адреса и значения. Находишь одно уникальное смещение, то есть твоё значение например 1, а у врагов должно быть по 0-ям. Рекомендую перезапустить игру и проделать заново анализ данных/структур, чтобы точно найти правильное смещение и значение. Типо так: Анализ структур: Смещение-описание Адрес: Значение Адрес: Значение Адрес: Значениебезымянная структура0260 - 4 Bytes 12345678 : 1 12345678 : 0 12345678 : 0 6: Запоминаем смещение 0260 и значение 1 и дорабатываем наш скрипт. Примечание:Я добавил ещё одну инструкцию в скрипт и изменил на её смещение,которая находится чуть выше над этой mov [esi+24C],eax Типо так, этот образец основан на стратегии Red Alert 2: [ENABLE] // Включение скрипта.Alloc(newmem,128) // Выделенная память пустоты на 128 байт.Label(returnhere) // Обратный прыжок.Label(originalcode) // Метка для оригинального кода.Label(originalcode2) // Добавил новую метку. newmem: // Выделенная памятьcmp byte ptr [esi+260],01 // Сравниваю общий регистр с нашим смещением и значение.je originalcode2 // Если равно, то прыгаю на полу изменённый код.jmp originalcode // Делаю прыжок на оригинальный код. originalcode2: // Метка для нашего кода бессмертия.nop // Здесь затёрли ненужную инструкцию test eax,eaxnopmov [esi+24C],eax // Оригинальная инструкция где сработал наш бряк.jmp returnhere // Делаем прыжок обратно. originalcode: // Метка для нашего оригинального кода.test eax,eax // Оригинальная инструкция которая находится над брякнутой.mov [esi+24C],eax // Оригинальная инструкция где сработал наш бряк.jmp returnhere // Делаем прыжок обратно. GAME.EXE+87654321: // Это модуль файла игры + смещение.jmp newmem // Делаем прыжок на выделенную память.nop // Здесь затёрли остаток части оригинального кода.nop // Чтобы не нарушать логику кода, а то будет вылет из игры.nopreturnhere: [DISABLE] // Выключение скрипта.Dealloc(newmem) // Высвобождение выделенной памяти (Дабы не засорять память).GAME.EXE+87654321: // Это модуль файла игры + смещение.test eax,eax // Оригинальная инструкция которая находится над брякнутой.mov [esi+24C],eax // Оригинальная инструкция где сработал наш бряк. В игре Red Alert 2 скрипт работал, все твои созданные войска и построенные здания были бессмертными. Хотя можно написать скрипт и по другому, вариантов много, кому как удобно.
    3 балла
  2. comiss xmm0,[esi+000000B8] << это получает доступ. проверяет хп у всех. Как я понял обращается постоянно. Нужно чуть подругому чтобы легче определить... Надо искать что пишет(writes) причем когда наносится урон смотреть сколько раз инструкция выполняется. Смотришь и выбираешь инструкцию(если она не одна) которая обратилась только когда был нанесен урон. Жмешь show in disacembler. Затем в дизасемблере жмешь правой кнопкой на инструкцию и выбираешь what addres accsec появится окошечко которое будет следить с какими адресами будет работать инструкция(сразу поставь тип float в появившемся окне) А теперь внимательно. Нам надо что бы отобразились твои адреса и адреса врагов. Теперь переключаешься в игру и струкаешь пару юнитов врагов. При нанесении урона адреса должны отобразиться в окне. Чтобы было наверняка сначало побей пару своих юнитов и адреса которые всплыли в окне перенеси в chetengine даблкликом и переименуй в me. А потом уж сделай тоже самое с врагом так же добавь и переименуй в enemy. После всей свистопляски должны получится хотя бы 4 адреса(2 твоих 2 врагов). Теперь идешь в dissect data structures и создаешь 2 группы. 1 группа соответственно будет твоя а второя вражин. Добавляешь адреся в ячейки и так как инструкция [esi+000000B8] отнимаешь B8. к примеру выглядеть будет так 0BAC3DE-B0 можно так и писать cheatengine сам вычтет. и таким же образом заполняешь все 4 адреса. Жмешь define structure окей. Появится куча смещений вот сидишь и сравниваешь какие смещения одинаковые у тебя и отличные у врагов P.S. вангую что инструкция будет movss [esi+000000B8],xmm0
    2 балла
×
×
  • Создать...

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

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