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

Вопрос про уникальность AoB


Andymit

Рекомендуемые сообщения

Всем доброго времени суток. Такой вопрос: нашел нужную мне инструкцию, открываю в дизассемблере, нажимаю на Tools -> Auto Assemble -> AoB Injection.

Но СЕ мне пишет, что массив байтов не уникален:

Спойлер

XhKAbHenFEc.jpg

И соответственно, при активации скрипта, СЕ бы не нашел, куда инжектить мой код (я же правильно понял?).

Погуглив, на форуме CheatEngine я нашел ответ, что нужно от этой инструкции выбрать еще несколько, выделить их, и нажать на Copy to clipboard -> Bytes only.

Так и сделал:

Спойлер

IcG5I7vKIAU.jpg9u3_8djjfM8.jpg

И после этих манипуляций, вроде как находит место, куда внедрять код, но получается вот такая петрушка:

Спойлер

aQVk1f4pHzg.jpg

то есть вроде как заинжектил, но инструкцию на jmp не поменял. 

Как исправить, скажите, пожалуйста?

Изменено пользователем Andymit
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Andymit сказал:

то есть вроде как заинжектил, но инструкцию на jmp не поменял. 

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

1 час назад, Andymit сказал:

Как исправить, скажите, пожалуйста?

удлиняя сигну, нужно её проверять на уникальность - либо посредством самого СЕ, либо например с помощью 

 

Ссылка на комментарий
Поделиться на другие сайты

37 минут назад, Garik66 сказал:

удлиняя сигну, нужно её проверять на уникальность - либо посредством самого СЕ, либо например с помощью 

Спасибо за ответ и скрипт. 

Ещё вопрос: получается, что чем длиннее сигнатура, тем меньше вероятность появления такой же где-то ещё? То есть я могу просто увеличивать сигнатуру до момента, пока она не станет уникальной и тогда он станет нормально инжектить?

Ссылка на комментарий
Поделиться на другие сайты

36 минут назад, Andymit сказал:

получается, что чем длиннее сигнатура, тем меньше вероятность появления такой же где-то ещё?

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

 

AOB(89 86 ? ? ? ? 41 F7 86 ? ? ? ? ? ? ? ? 74 0B) = 00000001410691C7 (адрес уникальной инструкции, рядом с нужной черная линия)

0x1410691C7 + 30(байт) = 0x1410691E5 (адрес нужной инструкции, красная линия)

 

image.thumb.png.c00ebd36a085dd8de6e8993933482d55.png

 

Количество байт между инструкциями может быть любое, но не стоит использовать дистанцию между инструкциями больше 100-150 байт. 

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, Andymit сказал:

получается, что чем длиннее сигнатура, тем меньше вероятность появления такой же где-то ещё?

Продолжу за уважаемым @partoftheworlD, не всегда - иногда удлиняя сигну, можно попасть на другой модуль/функцию, который/которая к примеру работает только в определенный момент и соответственно твоя сигна может не сработать. Так что удлинение тоже чревато.

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, partoftheworlD сказал:

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

А как это реализовать? Допустим я нашел инструкцию с уникальной сигной. Высчитал разницу между этой и нужно инструкцией. Жму на ней Auto Assemble. Если при этом я здесь дописываю смещение до моей инструкции нужной:

Спойлер

vI6YpmIdkwg.jpg

то СЕ все равно говорит, что AoB не уникальный:

Спойлер

szrM9Ua2rFE.jpg

А если не дописывать смещение, а написать его здесь:

Спойлер

eO35Z65tXlQ.jpg

то инжектит на найденную инструкцию с уникальной сигной.

Что я в этом случае делаю не так?

4 часа назад, Garik66 сказал:

Так что удлинение тоже чревато.

Да, спасибо. Только что проверил на практике. Удлинил еще сильнее, вплоть до return и все равно нашел еще 2 таких же сигны. 

Ссылка на комментарий
Поделиться на другие сайты

23 часа назад, Andymit сказал:

Что я в этом случае делаю не так?

Я вопроса не понял.

Первый вариант (quazar+BB56F0)- делаешь не правильно.

Второй вариант (GodMode+11)- делаешь правильно.

 

Ссылка на комментарий
Поделиться на другие сайты

28 минут назад, Garik66 сказал:

Я вопроса не понял.

Это я решил уточнить по способу, когда выбираешь инструкцию с уникальной сигнатурой, о которой мне повевдал @partoftheworlD. К чему я должен прибавлять/отнимать количество байтов, чтобы СЕ инжектил на мою инструкцию? Я в данном случае спрашивал за 12 строчку. Я там дописывал +78 к адресу инструкции с уникальной сигной. Но те 2 способа, которые я описал в предыдущем посте не сработали, т.к. я скорее всего сделал какую-то глупость, но из-за того, что я чайник еще, мне сложно сориентироваться где именно я что-то делаю не так. 

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

Ссылка на комментарий
Поделиться на другие сайты

19 минут назад, Andymit сказал:

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

Допустим я хочу сделать инъекцию на эту инструкцию:

Спойлер

image.thumb.png.7f559d2426b5089936eac95267f32121.png

Но она не уникально. и я выбираю допустим вот эту инструкцию:

Спойлер

image.thumb.png.43120b746fa903d9d09639716ba44755.png

Делаю скрипт из неё, добавляю 3 байта (59 89 С3 - смотри в отладчике столбец байты) к адресу который нашел аобскан и не забываю про выравнивание нопами, получаю такой скрипт:
 

Спойлер

image.thumb.png.b467f43893583ffc09af21f43ca8ac48.png

Активирую полученный скрипт:

Спойлер

image.thumb.png.7ff95049353de30416ed07ce270c8861.png

И как видишь в отладчике прыжок на инъекцию в нужном нам месте.

 

Так что дерзай, но в каких-то видео у меня такое уже точно было.

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, Garik66 сказал:

Делаю скрипт из неё, добавляю 3 байта (59 89 С3 - смотри в отладчике столбец байты) к адресу который нашел аобскан и не забываю про выравнивание нопами, получаю такой скрипт:

 

Только ты забыл написать, что надо ещё байты на восстановление изменить, а то в скрипте то сделал, но не объяснил.?

  • Спасибо 1
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, partoftheworlD сказал:

 

Только ты забыл написать, что надо ещё байты на восстановление изменить, а то в скрипте то сделал, но не объяснил.?

Вот поэтому я обычно и записываю видео - описывать текстом шаги сложнее.

Ссылка на комментарий
Поделиться на другие сайты

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

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

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