
Исследование защиты программы GPS Location Remover For Photos

Скриншот программы GPS Location Remover For Photos
Я думал, что уже всякой бесполезной хрени в жизни насмотрелся, а тут вот оно чо, Михалыч. Шароварное поделие GPS Location Remover For Photos, как можно догадаться из названия, предназначено для удаления геотегов из EXIF-секции фотографий. Типа это сохранит вашу приватность при размещении фотографий в соцсетях, а злобные враги не смогут узнать, где было сделано фото. То, что обычно фотографии сопровождаются всякими чекинами и камментами "Зоцените мы с посонами тусим в кабаке на Пушкенской", это в расчет не берется. Это не говоря уже о том, что кроме геотегов в EXIF остается много интересной информации. В который раз убеждаюсь в истинности пословицы "Без лоха жизнь плоха", и что абсолютно бесполезный продукт тоже можно пытаться продать.
Начинаем с загрузки дистрибутива. После установки и запуска наблюдаем полный комплект триальных надписей. Судя по структуре каталогов установленной программы, в ней используются языковые файлы. Логично предположить, что все текстовые строчки хранятся именно там. Откроем, к примеру, файл english.xml. Там легко обнаружатся строки, относящиеся к триальному режиму работы:
<Text.NotLicensed Text="Not Licensed"/>
<Text.TrialVersion Text="Trial Version"/>
<Text.YouAreUsingTheTrialVersion Text="You are using the 15-day trial version."/>
На самом деле их там гораздо больше, но нам хватит и этого. Переходим к исполняемому файлу. Он ничем не упакован. Размер большой, дизассемблеру потребуется немало времени для анализа, так что не будем с этим медлить. Параллельно поищем строчки из языкового файла, причем искать надо по названию XML-тега, а не по самому тексту:

Строка в файле
Посмотрим, где и как эта строчка используется. Из-за юникода текст по перекрестным ссылкам в дизассемблере не виден, но виден в HiEW.
Code (Assembler) : Убрать нумерацию
- .text:00AED358 push offset loc_AED60F
- .text:00AED35D push dword ptr fs:[eax]
- .text:00AED360 mov fs:[eax], esp
- ; Указатель
- .text:00AED363 mov eax, off_B2C02C
- ; Проверить DWORD по этому указателю
- .text:00AED368 cmp dword ptr [eax], 0
- ; Если он не равен 0, то программа зарегистрирована
- .text:00AED36B jnz loc_AED4A7
- .text:00AED371 lea ecx, [ebp+var_C]
- .text:00AED374 mov edx, offset off_AED628
- .text:00AED379 mov eax, ds:off_8803AC
- .text:00AED37E call sub_880AB0
- .text:00AED383 push [ebp+var_C]