Blog. Just Blog

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

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы 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.
  1. .text:00AED358                 push    offset loc_AED60F
  2. .text:00AED35D                 push    dword ptr fs:[eax]
  3. .text:00AED360                 mov     fs:[eax], esp
  4. ; Указатель
  5. .text:00AED363                 mov     eax, off_B2C02C
  6. ; Проверить DWORD по этому указателю
  7. .text:00AED368                 cmp     dword ptr [eax], 0
  8. ; Если он не равен 0, то программа зарегистрирована
  9. .text:00AED36B                 jnz     loc_AED4A7
  10. .text:00AED371                 lea     ecx, [ebp+var_C]
  11. .text:00AED374                 mov     edx, offset off_AED628
  12. .text:00AED379                 mov     eax, ds:off_8803AC
  13. .text:00AED37E                 call    sub_880AB0
  14. .text:00AED383                 push    [ebp+var_C]
Проверим адрес указателя, на основании которого выполняется проверка и срабатывает условный п