Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Протекторы —› Неизвестная защита |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 29 августа 2017 11:24 · Поправил: Boostyq · Личное сообщение · #1 Всем привет, Сейчас разбираю анти-чит от одной игры Сам экзешник тоже запакован, я просто запустила и сняла дамп, для статического анализа хватает Но! Ни один анализатор не определяет что это за защита, пишет что вообще ничего нет Не определяет и ладно, но изучая я вскоре поняла что все важные функции либо запакованы либо под виртуальной машиной Я пыталась в ручную трассировать разбирая куда уходит код, но потом он начинает так ветвится что не могу уследить Сам исполняемый код после дампа нормальный, но самое важное уходит под защиту Защищенный код явно обфусцирован, особенно переходы, весь код раздроблен на мелкие части и переплетается Code:
Code:
Code:
Вот листинг (начала!) защищенной функции Как я поняла, в начале собираются параметры для функции которую нужно распаковать Или может быть это контекст виртуалки Code:
Code:
Дальше выполняется операция shl в цикле Code:
Code:
Далее все уходит к xor в цикле и так далее, очень запутанно Code:
Сама ида путается, она вообще не умеет такие прыжки обрабатывать Клиент собран в 2014 году, хотя может защита прилинкована позже Все функции вызываются примерно одинаково: собирается контекст и далее распаковка Но нет единой vm_entry или чего-го похожего Может быть кто-то узнает что нибудь знакомое? Заранее спасибо ----- В облачке многоточия |
|
Создано: 31 августа 2017 10:31 · Поправил: Boostyq · Личное сообщение · #2 difexacaw пишет: Стесняюсь спросить, вы что понимаете в этом мусоре/рандоме что то ? Нуу, что-то понимаю, вообще мне хексрей очень нравится Просто из-за чего-то смещения отрицательные, так что создать структуру не получится Вообщем, в начале каждой функции создается контекст расшифровки Почти все переменные знаю, но реализовано очень странно В данной функции будет использоваться лишь часть алгоритма, я его переписала Суть в том, что он есть лента частей, она зашифрована с через leb128, каждое 64-битное число - это смещение, относительно базы, и размер части Далее идет цикл, пока указатель не будет равен концу части Вначале идет перезагрузка и расшифровка буфера, не знаю зачем, он всего 4 байта, может задумывалось несколько вариантов, в любом случае буфер тоже в контексте, в него копируется содержимое из сурса и ксорится ключом, ключ потом модифицируется Далее идет определение размера части, ограничивается остатком от части и общим размером буфера Дальше 2 ветвления которые вообще не используются в данном случае, и в конце идет запись расшифрованной части от части по указателю части Code:
Алгоритм работает, выдает байты от частей, вот только проблема ... ОНИ УЖЕ РАСШИФРОВАНЫ Ну некоторые из них, в любом случае чаще всего это код-кейвы между функциями, но код не получается валидный, даже когда очевидно, что там должна быть часть функции, часть даже не совпадает по размеру А определила, что алгоритм верный, т.к. некоторые части уже расшифрованы и совпадают с тем, что выдает моя программа Так что, было бы неплохо получить распакованный клиент, а дальше не знаю пока Потому что, возможно, функции уже были когда-то запущены то бишь уже распакованы, а мне нужен исходный клиент, когда этого не было, вроде как обратной шифровки не предусмотрено ----- В облачке многоточия |
|
Создано: 31 августа 2017 10:56 · Личное сообщение · #3 Boostyq пишет: ак что, было бы неплохо получить распакованный клиент, а дальше не знаю пока ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: Boostyq |
|
Создано: 31 августа 2017 21:44 · Поправил: Boostyq · Личное сообщение · #4 Вообщем есть как минимум 2 алгоритма, что-то расшифровывается, что-то нет Так же есть как минимум 474(1) защищенных функций, чтобы подсчитать написала маленький скрипт для иды Code:
Скорее всего нужно писать какой-то трейсер Мне прям интересно чем это они такое сгенерировали ----- В облачке многоточия |
<< . 1 . 2 . |
eXeL@B —› Протекторы —› Неизвестная защита |