
Исследование защиты программы PhotoVINTAGE

Скриншот программы
ФотоВИНТАЖ - программа для реставрации фотографий. Она обладает простейшим интерфейсом, который освоит даже новичок, но при этом несет на борту большой набор инструментов для автоматической и ручной коррекции. До идеала далеко, но работать можно. Удаление пятен, царапин, разрывов и других дефектов, колоризация черно-белых снимков в один клик, исправление искаженных цветов на фотографиях - вот лишь малая часть возможностей. А большАя часть заключается в необходимости выкладывать больше двух косарей за максимальный вариант лицензии.
С сайта забираем дистрибутив, но на этом установка не заканчивается, инсталлятор скачивает дополнительно еще пару сотен мегов всяких нужных для работы данных. Во время установки будьте предельно внимательны, чтобы случайно не наинсталлировать всякого сопутствующего говнища от хуяндекса. Когда все наконец-то установится, смотрим, что получилось. Программа написана на Qt, главный исполняемый файл ничем не упакован, отправляем его в дизассемблер и уходим пить кофе, чтобы переварить 80 с лишним мегов кода даже на шустрых машинах потребуется время.
Визуальный осмотр начнем с поиска в файле характерных сигнатур типа "license", "trial", "registered" и тому подобных. Поиск выводит нас на вот такой любопытный блок в сегменте данных:
Code (Assembler) : Убрать нумерацию
- .rdata:054404CA ; char aIstrial1[]
- .rdata:054404CA aIstrial1 db 'isTrial1',0
- .rdata:054404D3 a82r1 db '82R1',0
- .rdata:054404D8 aGl28 db 'GL28',0
- .rdata:054404DD a6hsd db '6HSD',0
- .rdata:054404E2 ; char aStartcheck1[]
- .rdata:054404E2 aStartcheck1 db 'startCheck1',0
- .rdata:054404EE ; char aStartcheck1Tim[]
- .rdata:054404EE aStartcheck1Tim db 'startCheck1 timout',0
- .rdata:05440501 ; char aStartcheck2[]
- .rdata:05440501 aStartcheck2 db 'startCheck2',0
- .rdata:0544050D ; char aStartcheck2Tim[]
- .rdata:0544050D aStartcheck2Tim db 'startCheck2 timout',0
- .rdata:05440520 ; char aReadkey2[]
- .rdata:05440520 aReadkey2 db 'readKey2',0
- .rdata:05440529 ; char aIstrial2[]
- .rdata:05440529 aIstrial2 db 'isTrial2',0
- .rdata:05440532 aG2ua db 'G2UA',0
- .rdata:05440537 a263s db '263S',0
- .rdata:0544053C aCfgu db 'CFGU',0
- .rdata:05440541 ; char aSendlicense[]
- .rdata:05440541 aSendlicense db 'sendLicense'