• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Метода как узнать что делает лоадер

mirvirusov

New member
11.07.2021
1
0
BIT
0
Есть кряк программы, реализован лоадером, вшитым в импорт в виде dll
DLL ка эта накрыта WinLicense и доблестный крэкер продает свой кряк под подписку, на время
Когда время лицензии истекает его лоадер перестает работать и соответственно кряка тоже нет. Хитрожопая схема не так ли ?

Так вот необходимо узнать, какие конкретно модификации делает лоадер в памяти процесса.
У меня идея такая. Процесс достаточно динамичный, не сидит и не ждет от пользователя каких-то действий, поэтому помимо изменений вносимых лоадером в самом процессе происходят изменения "легальные", производимые самим процессом во время его работы. Было бы гораздо проще если бы это был обычный процесс, достаточно было бы отследить изменения в секции кода и вот они заветные байтики - бежим делать патч. Но все не так просто, процесс защищен от модификации различными проверками типа хеш-сумм некоторых критичных к изменениям функций. И лоадер помимо изменений в коде в любом случае делает патч еще этих хеш сумм, а они хранятся в секции данных, и помимо лоадера туда пишет процесс в ходе работы, как бы банально это не звучало. И нужно определить какие данные меняет лоадер, а какие данные меняются самим процессом, что бы разграничить их и сделать чистый патч без глюков. А то лишнего наворочу и приложение будет падать в итоге в самый неподходящий момент. Непорядок будет.

Пока что я придумал такой вариант отделения изменений процесса и лоадера.
Нужно снять 3(можно больше) дампа с оригинального процесса, который загружается без вмешательства лоадера и найти все байты которые не совпадают в этих дампах. Это и будут те переменные, которые меняются в процессе работы процесса им же самим. Далее я хочу забить все эти переменные в одном из дампов нулями и на время отложить его. Назовем его ориг_мод.
Дальше такие же операции нужно будет произвести с процессом, который запускается с участием лоадера (снимаем несколько дампов и сравниваем) и разницу забиваем нулями, при этом вносимые лоадером изменения во всех дампах будут одинаковы и не попадут к числу переменных забиваемых нулями. Назовем этот модифицированный дамп с нулями лоад_мод.

Далее нужно будет просто сравнить дамп ориг_мод c дампом лоад_мод и в итоге мы получим разницу только там где делает изменения лоадер, а места которые меняет сам процесс в обеих файлах будут забиты нулями и не будут различаться. Чем больше дампов я сниму на первых 2 этапах с различными промежутками времени, тем меньше на мой взгляд будет помех.

Что скажете дамы и господа ? Может есть какой то другой более эффективный и короткий способ, как узнать, что делает лоадер накрытый WinLicense в другом dll модуле ?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!