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

Скриншот программы Photo Date Changer
Уникальная по своим возможностям Photo Date Changer непременно должна быть в арсенале каждого профессионального фотографа. Ведь больше ни одна программа в мире не способна выполнить вселенскую задачу - привести время создания и модификации файла фотографии в соответствие со временем создания снимка из EXIF. А кто еще сможет так мастерски изменить дату снимка в EXIF? Photo Date Changer - отличный выбор! И поверьте, каждый цент, вложенный в ее покупку, будет оправдан! Да шучу я, шучу. Обычная, никому нахер не нужная программа, по качеству не дотягивающая даже до школьного реферата по информатике.
Больше 13 мегов в упакованном инсталляторе... *facepalm*... Установим и посмотрим, что же там такого наворочено. Файл exiftool.exe в папке с программой однозначно указывает, что все это поделие - очередная надстройка над бесплатной утилитой ExifTool от Phil Harvey. Упомянуть Фила в благодарностях или в описании программы аффтару, видимо, не позволила гордость. Так же аффтар скромно умолчал, что всю работу с метаданными в файлах выполняет как раз ExifTool, а самому разобраться в формате EXIF не хватило мозгов. Зато десятку баксов вынь да положь, куда ж без этого.
При старте незарегистрированной программы появляется окно с предложением выложить бабло, а также упоминается ограничение на обработку не более 5 файлов. Начинаем искать зацепки для исследования. У всех свои методы, я обычно начинаю с поиска по файлам характерных строк типа "trial", "registered", "licensed" и тому подобных. Итак, по слову "registered" в файле pdc.dll обнаруживается следующая строка:

Строка в файле
Значит в дизассемблер отправится именно эта библиотека. Когда анализ файла будет закончен, переходим по адресу, откуда есть перекрестные ссылки на эту строку:
Code (Assembler) : Убрать нумерацию
- ; Вызвать функцию проверки
- .text:100019A2 call sub_10017800
- .text:100019A7 test al, al
- ; Если AL!=0, то вывести строку о зарегистрированной программе
- .text:100019A9 jz loc_10001AB3
- .text:100019AF push 432h
- .text:100019B4 mov ecx, ebx
- .text:100019B6 call sub_1002E181
- .text:100019BB mov ecx, [eax+20h]
- .text:100019BE push edi
- .text:100019BF push edi
- .text:100019C0 push 31h
- .text:100019C2 push ecx
- .text:100019C3 mov [esp+28h], eax
- .text:100019C7 call ds:SendMessageW
- .text:100019CD push eax
- .text:100019CE call ?FromHandle@CGdiObject@@SGPAV1@PAX@Z
- .text:100019D3 mov eax, [eax+4]
- .text:100019D6 lea edx, [esp+0ECh]
- .text:100019DD push edx
- .text:100019DE push 5Ch
- .text:100019E0 push eax
- .text:100019E1 call ds:GetObjectW
- .text:100019E7 mov ecx, 17h
- .text:100019EC lea esi, [esp+0ECh]
- .text:100019F3 lea edi, [esp+8Ch]
- .text:100019FA rep movsd
- .text:100019FC lea ecx, [esp+8Ch]
- .text:10001A03 push ecx
- .text:10001A04 mov dword ptr [esp+0A0h], 2BCh
- .text:10001A0F lea esi, [ebx+268h]
- .text:10001A15 call ds:CreateFontIndirectW
- .text:10001A1B push eax
- .text:10001A1C mov ecx, esi
- .text:10001A1E call sub_10025514
- .text:10001A23 test esi, esi
- .text:10001A25 jz short loc_10001A2A
- .text:10001A27 mov esi, [esi+4]
- .text:10001A2A loc_10001A2A:
- .text:10001A2A push 1
- .text:10001A2C push esi
- .text:10001A2D mov esi, [esp+20h]
- .text:10001A31 mov edx, [esi+20h]
- .text:10001A34 push 30h
- .text:10001A36 push edx
- .text:10001A37 call ds:SendMessageW
- ; Строка сообщения о зарегистрированной программе
- .text:10001A3D push offset aYouAreUsingARe
- ; "You are using a registered version of t"...
- .text:10001A42 lea ecx, [esp+30h]
- .text:10001A46 call sub_10002150

Программа успешно "зарегистрирована"
Стартовое окно регистрации пропало, ограничений на 5 файлов тоже нет. Цель достигнута. Мне кажется, что подобные чудо-программы пишутся специально для выведения крякеров из состояния душевного равновесия. Смотреть на листинг через перманентный фейспалм очень неудобно.
Просмотров: 2588 | Комментариев: 8

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье

solokot
(16.12.2016 в 10:20):
Да вроде читал. И изменение даты-времени, и установка даты создания файла по дате съёмки из exif в Exiferе есть. Ок, пусть я буду блондинка, но что я не увидел?

pawel97
(10.12.2016 в 16:57):
В dll зашит белый список из 5! преобразованных серийников. ВОТ сколько чуваков повелось и потратило деньги на ЭТО. Лень ковырять преобразования, просто меняем переход после первого сравнения на безусловный.
x86: 10015EB9
x64: 18001A1BF
И вводим любой сериал.
Улыбнули названия других его прог - "A Better File Rename", "Better File Attributes". Видел их автор тотал коммандера? :)
x86: 10015EB9
x64: 18001A1BF
И вводим любой сериал.
Улыбнули названия других его прог - "A Better File Rename", "Better File Attributes". Видел их автор тотал коммандера? :)

Never
(10.12.2016 в 14:17):
- чувство юмора тебя не оставляет )))

ManHunter
(10.12.2016 в 11:32):
solokot, неужели дальше половины первого абзаца не читал?

solokot
(10.12.2016 в 09:01):
А разве Exifer всего этого не может?

ManHunter
(10.12.2016 в 01:03):
Да там одна сплошная пичалька, а не программа. С русскими названиями каталогов не работает, файлы .jpeg не воспринимает, надо переименовывать именно в .jpg, и это только за несколько минут тестирования. Внутри еще хуже, налеплена куча компонентов и подперта костыликами. Про ExifTool написал в статье.

pawel97
(10.12.2016 в 00:56):
Вот так вот читаешь начало, и аж купить захотелось, ибо учитель плохого не посоветует. :) С ентого погромиста надо бы бабок поиметь за такую рекламу.

Добавить комментарий
Заполните форму для добавления комментария

Это означает, что программа - унылое говно, весь ее функционал ущербный чуть более, чем полностью, качать ее ни в коем случае не надо, пользоваться тем более, а автору надо убиться об стену.
А сама статья про исследование ее защиты. Ни единого слова про Exif или про программы для работы с датами и тегами тоже нет. Поэтому вопрос
абсолютно неуместный. Может, и еще куча другого реально офигенского софта может, но речь тут ВООБЩЕ не о них.