User123 Опубликовано 22 апреля, 2015 Поделиться Опубликовано 22 апреля, 2015 Собственно,вопрос:как искать сигнатуры,т.е. как узнать какие байты меняются,а какие нет?Видел видеоурок кенга про плагин к олли,хотелось бы знать,как искать их самому Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 22 апреля, 2015 Поделиться Опубликовано 22 апреля, 2015 Проверочные байты СЕ за тебя выставит, надо только в окне Автоассемблера в меню выбрать "Templates" -> AOB Injection" (в русской не помню, но примерно так: "Шаблоны" -> "AOB Инъекция"). Или в окне отладчика выбрать с помощью левой кнопки мыши (с зажатой клавишей Shift) нужные инструкции, затем кликнуть по ним правой кнопкой мыши, и выбрать пункт "Copy to clipboard" -> "Bytes only (no address)" (в русской: "Копировать в буфер обмена" -> "Только байты (без адреса)" - как-то так). Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 22 апреля, 2015 Поделиться Опубликовано 22 апреля, 2015 Привет! Ассемблерные инструкции компилируются в опкоды, и эти самые инструкции состоят из операторов и операндов. Допустим: MOV EAX,EBXMOV ECX,[EDX+0x10] В первом случае ты получишь опкоды (это пример) "AABBCCDD", которые и будут сигнатурой. Во втором случае во втором операнде команды MOV есть смещение 0x10, которое нужно учитывать. Грубо говоря, сигнатура должна учитывать все вещи, которые существуют динамически - смещения, адреса и все такое. Поэтому если во втором случае ты имеешь такой опкод: AAEEFF10 То 10 тут нужно заменить на ??. Почему так? Потому что до сигнатуры можно добавить 10 байт кода и все адреса\смещения съедут на 10 байт вперед. Код при этом может и не измениться, но сигнатура работать уже не будет, поэтому смещение, которое может поменяться в следующем патче, стоит учесть. Ссылка на комментарий Поделиться на другие сайты Поделиться
User123 Опубликовано 22 апреля, 2015 Автор Поделиться Опубликовано 22 апреля, 2015 Спасибо,вроде понялДля примера взят сапер:movss [rax+20],xmm0 - опкоды F3 0F 11 40 20 - байты F3 0F ?? ?? 20 - сигнатура?или F3 0F 11 40 ?? ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 апреля, 2015 Поделиться Опубликовано 22 апреля, 2015 Для примера взят сапер:По этим байтам (F3 0F 11 40 20 - байты) находятся две инструкции. Так что скорее всего может случиться глюк, при включении скрипта.Вот допустим как Plugin AA делает: Он захватывает только опкоды, остальное заменяет на XX (или ??).Сигнатура f3xxxxxxxx00xx00xx01xx00xx00xxxx0d захватывает 7 инструкций:[ENABLE]aobscan(Timer, f3xxxxxxxx00xx00xx01xx00xx00xxxx0d)alloc(newMem, 64)label(returnHere)registersymbol(Timer)newMem:mov [rax+20],1jmp returnHereTimer:jmp newMemreturnHere:[DISABLE]Timer:movss [rax+20],xmm0unregistersymbol(Timer)dealloc(newMem) minesweeper.exe+2B75B - F3 0F11 40 20 - movss [rax+20],xmm0minesweeper.exe+2B760 - 00 00 - add [rax],alminesweeper.exe+2B762 - 00 CD - add ch,clminesweeper.exe+2B764 - 01 00 - add [rax],eaxminesweeper.exe+2B766 - 00 00 - add [rax],alminesweeper.exe+2B768 - 00 48 8B - add [rax-75],clminesweeper.exe+2B76B - 0D F0F40700 - or eax,7F4F0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 23 апреля, 2015 Поделиться Опубликовано 23 апреля, 2015 Плагин "Plugin AA Maker" штука интересная, но после появления встроенного шаблона генерации сигнатур в меню АА окна, этот плагин можно не использовать. АА Maker подходит для поиска сигнатур, но а) не указывает модуль, в котором ищет (exe или dll) б) пропускаете первый пять байт или больше, которые нужны для проверки инъекций minesweeper.exe+2B75B - F3 0F11 40 20 - movss [rax+20],xmm0Здесь нужен не только байт F3, но и все остальные F30F114020, потому что нужен чтобы был rax, чтобы было смещение +20, и чтобы был регистр xmm0. AA Maker включает байт опкода, но не включает все первый пять байт или более для проверки ключевых данных, которые могут использоваться в инъекциях и могут быть разными на разных версиях игр. Если используете плагин AA Maker, то хотя бы первые пять байт оставляйте цельными и указывайте модуль в котором будет поиск сигны. Либо делайте инъекцию так чтобы она не работала с регистрами, не работала со смещениями относительно базового адреса, но сделать это может быть нелегко (об этом ниже, в последнем абзаце поста) Вообще тема работоспособности читов на разных версия игр актуальна. Я кстати так и не доделал генерацию автоматической инъекции по правилам, по сигнатуре в плагине для CE. Т.е. например мы нашли сигнатуру, а по ней вышли на movss [rax+20],xmm0, но мы не хотим знать ни rax и не хотим знать +20 и не знаем xmm0, мы хотим только знать маску movss [register1+offset1],register2 или знаем маску movss [address1],register1 и знаем правило например "вписать значение 9999". Далее уже в самое игре, после активации чита, должен быть сгенерирован АА скрипт по правилу "Постоянное значение". АА скрипт должен сам создаваться по маске. Данный способ может существенно увеличить живучесть читов, но не на 100%. Я помню пример, когда после выхода новой версии игры, код в ней значительно менялся и никакая сигнатура там не работала. Это значит нужен уже другой подход. Если одни сигнатуры не работают, то могут работать другие и их надо найти имея под рукой множество версий игр... Пока может быть другой способ. Это стараться избегать внутри инъекции регистров, смещений. Это может быть "ноппинг", "исправление прыгов", "правка простых инструкций" и даже может быть работа с первым стековым адресом по ESP или RSP на определенном адресе кода найденного по сигнатуре... Такие дела... Ссылка на комментарий Поделиться на другие сайты Поделиться
Stigmaer Опубликовано 17 ноября, 2018 Поделиться Опубликовано 17 ноября, 2018 В 22.04.2015 в 18:45, Гость сказал: (в русской: "Копировать в буфер обмена" это не сигнатура это аобкарта , сигнатура это когда в aobscan статистические оставлены а динамические затёрты иксами. В 22.04.2015 в 19:53, Garik66 сказал: Plugin AA делает: а где его скачать и как пользоваться? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 ноября, 2018 Поделиться Опубликовано 17 ноября, 2018 59 минут назад, Stigmaer сказал: это не сигнатура это аобкарта , сигнатура это когда в aobscan статистические оставлены а динамические затёрты иксами. не верно почитай: Спойлер II. Создание шаблона сигнатуры функцииШаблон состоит из двух частей: сигнатуры и маски. Сигнатурой является та самая уникальная последовательность байт. Маска указывает на то, какие части сигнатуры могут изменятся, чтобы игнорировать их при поиске.Для получения нужной нам информации будем использовать Interactive Disassemler(IDA). После открытия исследуемой библиотеки, необходимо включить показ кодов микрокоманд. В меню Options->General... во вкладке Disassembly в поле Number of opcode bytes поставьте 10. После чего слева от ассемблерных микрокоманд появятся их машинное представление.Как только вы нашли требуемуемую функцию, можно приступать к созданию шаблона.Сигнатурой функции является та самая уникальная последовательность байт. Просто скопируйте их из дизассемблера. Главное условие - эта последовательность должна быть уникальна в пределах программы. Я использую 32 байта в качестве сигнатуры, но размер никак не ограничен. Сразу следует отметить, что это должны быть именно ПЕРВЫЕ n байт, так как адресом является точка входа функции, а это и есть её начало. Это упрощает поиск.Далее нужно составить маску сигнатуры, тем самым исключив динамические части. Адреса, как операнды микрокоманд, изменяются всегда. На самом деле, только их исключать из поиска и имеет смысл. Обычно это микрокоманды: jmp call условные переходы jXX(jc, jnz, jbne etc.) lea mov Определимть использование адреса легко - размер микрокоманды от 5 байт и выше(в 32-разрядных системах размер адреса равен 4 байтам, с этим связано ограничение на 4 ГиБ ОЗУ). Микрокоманды, работающие с непосредственными значениями и\или регистрами, могут быть больше, чем 5 байт, однако не нуждаются в исключении. Маска представляет собой строку, в которой байты, содержащие динамические значения отмечены знаками вопроса('?'), а все остальные 'x' или любым другим.Рассмотрим небольшой пример. После кода идут символы маски, которые соответствуют кодам микрокоманд. Код ; пролог функции не нуждающийся в исключении .text:01D6C2F0 55 push ebp .text:01D6C2F1 8B EC mov ebp, esp .text:01D6C2F3 56 push esi x xx x ;обычные операции с регистрами .text:01D6C2F4 8B 75 08 mov esi, [ebp+arg_0] .text:01D6C2F7 56 push esi xxx x ;вызов функции, первый байт - опкод, остальные 4 - адрес, его мы помечаем знаками вопроса .text:01D6C2F8 E8 B3 08 00 00 call sub_1D6CBB0 x???? ;обычные операции с регистрами .text:01D6C2FD 83 C4 04 add esp, 4 .text:01D6C300 83 F8 01 cmp eax, 1 xxx xxx ;короткий переход не использует адрес, лишь смещение относительно текущего адреса .text:01D6C303 7C 38 jl short loc_1D6C33D xx ;сравнение регистра eax с адресом ;первый байт - опкод, второй - регистр eax, остальные - адрес .text:01D6C305 3B 05 28 6F 13 02 cmp eax, dword_2136F28 xx???? ;опять короткий переход .text:01D6C30B 7F 30 jg short loc_1D6C33D xx ;перемещение в регистр адреса ;первый байт - опкод, второй - регистр edx, остальные - адрес .text:01D6C30D 8B 15 24 6F 13 02 mov edx, dword_2136F24 xx???? ;обычные операции с регистрами и непосредственными значениями .text:01D6C313 8D 0C 80 lea ecx, [eax+eax*4] .text:01D6C316 C1 E1 09 shl ecx, 9 .text:01D6C319 03 C8 add ecx, eax .text:01D6C31B 6A 39 push 39h xxx xxx xx xx ;обратите внимание, код микрокоманды занимает 7 байт, но не использует адреса ;это значит что исключать из поиска ничего не нужно .text:01D6C31D 8D 84 CA F8 AF FF FF lea eax, [edx+ecx*8-5008h] xxxxxxx ;опять опычные операции .text:01D6C324 8D 70 7C lea esi, [eax+7Ch] .text:01D6C327 56 push esi xxx x ;вызов функции, первый байт - опкод, остальные - адрес .text:01D6C328 E8 F3 9E FC FF call sub_1D36220 x???? В итоге мы получим: Код сигнатура: "55 8B EC 56 8B 75 08 56 E8 B3 08 00 00 83 C4 04 83 F8 01 7C 38 3B 05 28 6F 13 02 7F 30 8B 15 24 6F 13 02 8D 0C 80 C1 E1 09 03 C8 6A 39 8D 84 CA F8 AF FF FF 8D 70 7C 56 E8 F3 9E FC FF" маска: "xxxxxxxxx????xxxxxxxxxx????xxxx????xxxxxxxxxxxxxxxxxxxxxx????" 1 час назад, Stigmaer сказал: а где его скачать и как пользоваться? Здесь, либо в подписи @MasterGH но он не для последних версий СЕ. Ссылка на комментарий Поделиться на другие сайты Поделиться
Stigmaer Опубликовано 17 ноября, 2018 Поделиться Опубликовано 17 ноября, 2018 (изменено) 1 час назад, Garik66 сказал: не верно Вообще то то что я написал это из видеоурока Кенга, не помню названия но он там по заявке весёлую ферму ломал, и это его слова, если я не прав, значит и Кенг не грамотный! 1 час назад, Garik66 сказал: но он не для последних версий СЕ я пользуюсь версией 6.4 она пойдёт? Изменено 17 ноября, 2018 пользователем Stigmaer Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Risugava Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 Добрый день, я нашёл сигнатуру в игре инди кот, эта сигнатура отвечает за количество опыта, и мне нужно её заменить так чтоб опыта стало 1 000 000, на какую сигнатуру мне менять, как её найти, или создать, при попытке заменить число в памяти сигнатура меняется но игра Крашится Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 53 минуты назад, Risugava сказал: Добрый день, я нашёл сигнатуру в игре инди кот, эта сигнатура отвечает за количество опыта, и мне нужно её заменить так чтоб опыта стало 1 000 000, на какую сигнатуру мне менять, как её найти, или создать, при попытке заменить число в памяти сигнатура меняется но игра Крашится Смотреть уроки, читать материалы, понимать, что представляет из себя сигнатура и как с ними работать. Материалов на форуме и на нашем канале полно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Risugava Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 10 минут назад, Xipho сказал: Смотреть уроки, читать материалы, понимать, что представляет из себя сигнатура и как с ними работать. Материалов на форуме и на нашем канале полно. Есть ссылка на статью или видео? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 Нет. Поиск по форуму в помощь. А видео можно смотреть на нашем канале, ссылка на который есть у меня в подписи. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Risugava Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 1 минуту назад, Xipho сказал: Нет. Поиск по форуму в помощь. А видео можно смотреть на нашем канале, ссылка на который есть у меня в подписи. Понял спасибо, а с чего начать, можете порекомендовать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 11 февраля, 2019 Поделиться Опубликовано 11 февраля, 2019 2 часа назад, Risugava сказал: Понял спасибо, а с чего начать, можете порекомендовать? Рекомендую начать с самого начала. Без знания основ дальше никуда. Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 6 марта, 2020 Поделиться Опубликовано 6 марта, 2020 (изменено) А возможно найти сигнатуру с прыжками? На пример Спойлер cmp [esi+88],(float)60 jne code mov dword ptr [esi+000002B4],(float)0 Если возможно то как? Изменено 6 марта, 2020 пользователем Pitronic Исправление грамматических ошибок Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 7 марта, 2020 Поделиться Опубликовано 7 марта, 2020 5 часов назад, Pitronic сказал: А возможно найти сигнатуру с прыжками? На пример Такую ты точно не найдешь так как, игра не использует для сравнения точки "cmp" Хотя если кто то так написал, то можешь и найти. Что опять же, на вряд ли. А выглядеть это будет всё - как то так: Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения