Blog. Just Blog

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

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы
Скриншот программы

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

С сайта забираем дистрибутив, но на этом установка не заканчивается, инсталлятор скачивает дополнительно еще пару сотен мегов всяких нужных для работы данных. Во время установки будьте предельно внимательны, чтобы случайно не наинсталлировать всякого сопутствующего говнища от хуяндекса. Когда все наконец-то установится, смотрим, что получилось. Программа написана на Qt, главный исполняемый файл ничем не упакован, отправляем его в дизассемблер и уходим пить кофе, чтобы переварить 80 с лишним мегов кода даже на шустрых машинах потребуется время.

Визуальный осмотр начнем с поиска в файле характерных сигнатур типа "license", "trial", "registered" и тому подобных. Поиск выводит нас на вот такой любопытный блок в сегменте данных:
  1. .rdata:054404CA ; char aIstrial1[]
  2. .rdata:054404CA aIstrial1       db 'isTrial1',0
  3. .rdata:054404D3 a82r1           db '82R1',0
  4. .rdata:054404D8 aGl28           db 'GL28',0
  5. .rdata:054404DD a6hsd           db '6HSD',0
  6. .rdata:054404E2 ; char aStartcheck1[]
  7. .rdata:054404E2 aStartcheck1    db 'startCheck1',0
  8. .rdata:054404EE ; char aStartcheck1Tim[]
  9. .rdata:054404EE aStartcheck1Tim db 'startCheck1 timout',0
  10. .rdata:05440501 ; char aStartcheck2[]
  11. .rdata:05440501 aStartcheck2    db 'startCheck2',0
  12. .rdata:0544050D ; char aStartcheck2Tim[]
  13. .rdata:0544050D aStartcheck2Tim db 'startCheck2 timout',0
  14. .rdata:05440520 ; char aReadkey2[]
  15. .rdata:05440520 aReadkey2       db 'readKey2',0
  16. .rdata:05440529 ; char aIstrial2[]
  17. .rdata:05440529 aIstrial2       db 'isTrial2',0
  18. .rdata:05440532 aG2ua           db 'G2UA',0
  19. .rdata:05440537 a263s           db '263S',0
  20. .rdata:0544053C aCfgu           db 'CFGU',0
  21. .rdata:05440541 ; char aSendlicense[]
  22. .rdata:05440541 aSendlicense    db 'sendLicense'