Начало было положено в нашем чате telegram:





Пользуясь случаем всех приглашаю, присоединяйтесь :)

В дальнейшем пользователь мне написал в личные сообщения и отправил билд.

1614869910822.png
1614869954239.png

Ну что ж, выполняем чужую лабу.

0x00. Исследование
Первым делом необходимо выяснять разрядность приложения и тип билда: натив или дотнет. В данном случае у нас x86, native, delphi.

1614869538897.png
Скачать:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!


После исследование выбор стоит на отладчике. IDA, OllyDbg, x64dbg? Выбираем последнее ввиду его свободного распространения и актуальности, скачиваем:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!


При первом запуске, данный крякми не отдает никакого сообщения о валидации входящих значений, что немного, но усложняет исследование образца. Выходом из данной ситуации станет использование IDR (Interactive Delphi Reconstructor), скачать можно у нас с ресурсов:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!


0x01. Реверсинг

Запускаем IDR и закидываем наш билд. Переходим в Forms (F5) и выбираем Form.

1614870175201.png

В последующем кликаем на Form1.

1614870238892.png

У нас появляются 2 кнопки с коллами + сама формочка. По логике человек закинул валидацию на вторую кнопку, поэтому прыгаем на нее раскрывая Button2.

1614870452079.png

Выше изображен ассемблерный код, нам интересен адрес 00455933, копируем его и бежим в x64dbg. Переходим по адресу в x64dbg через Ctrl+G

1614870816374.png

Забегая вперед переходим: 00455941 | 8B15 208C4500 | mov edx,dword ptr ds:[458C20] | 00458C20:&"79991" и переходим к значению дампа. Как мы видим, это динамика, мы можем изменить только в моменте на данном этапе.

1614870990769.png

Выделяем наше динамическое значение:

1614871554109.png

Изменяем на Ctrl+E

1614871639486.png

В ASCII мы вводим к примеру "00000", значение должно совпадать по размеру с предыдущем, чтобы не выходить за выделенную память. После изменения жмем "OK" и переходим к билду, который выгружен у нас в память.

К слову, как должно быть после изменения:

1614871773082.png

Сначала введите неверное значение, к примеру "0000", у вас ничего не произойдет, но когда вы введете "00000" - у вас в тайтле формы начнет меняться имя.

1614871848203.png

Из этого следует, что мы верно нашли область валидации и теперь с ней необходимо поработать.

Исследуем дальше и натыкаемся на jne. При неверной валидации данных - мы не заходим в данное условие, из-за этого мы пролетаем и программа считает, что мы ничего не сделали и не отдает никакой ответ. Самый простой выход - это удаление и заполнение нопами, что мы и сделаем.

Переходим на условие и нажимаем Ctrl+F9 или Del, если вы как нормальный человек перебилдили все ранее. В конечном итоге мы удалили условие и теперь выполняем обычный заход без него.

1614871271777.png

Соберем билд и проверим работоспособность. Ctrl+P
1614871333768.png


Выделяем все и нажимаем "Исправить файл". В последующем даем ему имя patch.exe и запускаем для проверки работоспособности кряка.
Запускаем и предугадывая результат - все работает.


0x02. Post scriptum

На первичном этапе исследования меня заинтересовало, что они делают на событии OnCreate (это событие вызывается при открытии программы) и какое мое было удивление, когда я увидел следующее:

1614872165467.png

Сразу ударил колл вызова кнопки1, которая и генерирует ключ и потом еще в не отрисовавшуюся форму с компонентами кидают данные из процедуры кнопки. Так нельзя делать, так как подобное событие если и должно было быть, оно должно было быть вызвано только на OnShow. Преподавателю обязательно стоит прочесть про жизненный цикл формы: OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint ... В данном случае ошибка не вызывается, но когда данных и кол-ва обращений станет больше - будет ошибка обращения к адресу, так как он не будет еще существовать, а в него уже долбятся на OnCreate.

Мне страшно, какие "специалисты" потом выпускаются в российских вузах, с такими крякми от преподавателей, это пиздец товарищи.

Все материалы будут приложены во вложениях, спасибо за внимание.