Исследование защиты программы Franzis NEAT projects 2
Скриншот программы Franzis NEAT projects 2
Вообще я стараюсь придерживаться правила, что после выкладывания разбора очередной защиты, больше не трогать ни одной программы этого разработчика. Но тут уж очень классная программа, да и защита немного поменялась, так что пусть это будет шпаргалка для самого себя. Franzis NEAT projects позволяет в автоматическом режиме убирать с фотографий все движущиеся предметы. Например, в поездке вы делаете несколько снимков какой-нибудь достопримечательности с разными интервалами времени, затем отправляете всю пачку фотографий в программу, она анализирует все возможные статичные области и составляет из них чистое изображение. Словно по волшебству из кадра пропадает вся человечина. Причем даже не обязательно пользоваться штативом, программа сама выровняет все кадры.
Забираем с офсайта дистрибутив, устанавливаем. Ссылка может меняться от версии к версии, если что, то уточняйте свежий линк на странице загрузки. В архив зачем-то упакованы инсталляторы для Mac и Windows, из-за чего он имеет такой монстрячий размер. А в исполняемом файле инсталлятора содержатся два дистрибутива для 32-битной и 64-битной версии Windows. Такая вот матрешка в немецком исполнении. Главный исполняемый файл ничем не упакован, сразу отправляем его на дизассемблирование. Теперь что касается ограничений. Программа при старте вываливает триальное окно с предложением активировать ее, без регистрации работает 30 дней, при сохранении итогового файла накладывает на него триальный текстовый маркер. Ну и всякое по мелочи типа надписей "TRIAL" в заголовке главного окна и в окне "О программе".
Перебирая поиском характерные строчки типа "registered", "trial", "activated", "expired" и тому подобные, выходим на вот такой интересный набор данных в главном исполняемом файле:
Переменные защиты
Если вы раньше видели навесной протектор Armadillo, то без труда узнаете названия основных переменных окружения, которые в нем используются для реализации триала и регистрации. На этом файле никакого Armadillo нет, но разработчики защиты явно были им вдохновлены. За регистрацию программы, как и в упомянутом протекторе, отвечает переменная "ALTUSERNAME". Посмотрим код, где она используется.
Code (Assembler) : Убрать нумерацию
- .text:007FF160 push 0FFFFFFFFh
- .text:007FF162 push offset loc_878A5C
- .text:007FF167 mov eax, large fs:0
- .text:007FF16D push eax
- .text:007FF16E sub esp, 10h
- .text:007FF171 push ebx
- .text:007FF172 push ebp
- .text:007FF173 push esi
- .text:007FF174 push edi
- .text:007FF175 mov eax, dword_DE84C0
- .text:007FF17A xor eax, esp
- .text:007FF17C push eax
- .text:007FF17D lea eax, [esp+30h+var_C]
- .text:007FF181 mov large fs:0, eax
- .text:007FF187 mov esi, ecx
- .text:007FF189 xor ebx, ebx
- .text:007FF18B mov [esp+30h+var_10], ebx
- .text:007FF18F mov ebp, ds:?fromAscii_helper
- .text:007FF195 push 0FFFFFFFFh
- .text:007FF197 push offset aAltusername ; "ALTUSERNAME"
- .text:007FF19C mov [esp+38h+var_4], ebx
- .text:007FF1A0 call ebp
- .text:007FF1A2 add esp, 8
- .text:007FF1A5 mov [esp+30h+var_18], eax
- .text:007FF1A9 mov edi, [esp+30h+arg_0]
- .text:007FF1AD lea eax, [esp+30h+var_18]
- .text:007FF1B1 push eax
- .text:007FF1B2 push edi
- .text:007FF1B3 lea ecx, [esi+1Ch]
- .text:007FF1B6 mov [esp+38h+var_4], 1
- .text:007FF1BE call sub_8040C0
- .text:007FF1C3 mov ecx, [esp+30h+var_18]
- .text:007FF1C7 mov [esp+30h+var_10], 1
- .text:007FF1CF mov byte ptr [esp+30h+var_4], bl
- .text:007FF1D3 or edx, 0FFFFFFFFh
- .text:007FF1D6 lock xadd [ecx], edx
- .text:007FF1DA mov esi, ds:?free
- .text:007FF1E0 jnz short loc_7FF1EC
- .text:007FF1E2 mov eax, [esp+30h+var_18]
- .text:007FF1E6 push eax
- .text:007FF1E7 call esi ; QString::free
- .text:007FF1E9 add esp, 4
- .text:007FF1EC loc_7FF1EC:
- .text:007FF1EC push 0FFFFFFFFh
- .text:007FF1EE push offset aDefault_0 ; "DEFAULT"
- .text:007FF1F3 call ebp
- .text:007FF1F5 add esp, 8
- .text:007FF1F8 mov [esp+30h+var_14], eax
- .text:007FF1FC push ebx
- .text:007FF1FD lea ecx, [esp+34h+var_14]
- ...
Code (Assembler) : Убрать нумерацию
- .text:007FF9A1 push ebx
- .text:007FF9A2 lea eax, [esp+8+var_4]
- .text:007FF9A6 push eax
- ; Вызвать функцию проверки
- .text:007FF9A7 call sub_7FF160
- .text:007FF9AC mov ecx, [eax]
- ; Строка регистрационного имени пустая?
- .text:007FF9AE cmp dword ptr [ecx+8], 0
- .text:007FF9B2 mov edx, [esp+8+var_4]
- ; Если не пустая, то установить регистр BL=1
- .text:007FF9B6 setnz bl
- .text:007FF9B9 or eax, 0FFFFFFFFh
Программа успешно "зарегистрирована"
Никакие предложения активации не появляются, в окне "О программе" красуется надпись о зарегистрированной версии, при сохранении итогового файла всякие мусорные текстовки на него не накладываются. Вот и все, цель достигнута, добавляем очередной полезный инструмент в копилку графических программ. Похожим образом доводятся до ума и остальные программы этого разработчика.
Кстати, подобные действия можно выполнить в графическом редакторе Adobe Photoshop. Для этого откройте меню "Файл", затем "Сценарии" и "Статистика...":
Открываем меню Photoshop
В открывшемся окне выберите папку с заготовленной пачкой фотографий или отдельные фотографии, в селекте "Выбрать режим стека" выберите пункт "Медиана", проставьте галочку "Попытаться автоматически выровнять исходные изображения".
Загружаем отдельные кадры
После нажатия "OK" в дело вступает автоматика и вы увидите, как ненавистные куски мяса исчезают из кадра.
Очищенный кадр
Разумеется, качество результата зависит от количества исходного материала и разнообразия положений движущихся объектов. Но в любом случае можно добиться очень впечатляющих результатов и удивить друзей фотографией какой-нибудь достопримечательности, вокруг которой нет привычной толпы туристов.
Просмотров: 1750 | Комментариев: 9
Метки: исследование защиты, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(11.11.2022 в 13:47):
ida pro
Знаток
(11.11.2022 в 13:43):
***Да и сейчас у многих людей уже оперативки дофига.***
Враньё, та к во многих организациях в 2022 го и в 2023 году будут ещё пользоваться Wndows7-32bit, многим лучще пользоватсья нотубуком, а там памяти им так мало. А монтажники пользуются нетбуками.
забвл спросить, жто в какой программе сделан десамблирвоание?
Враньё, та к во многих организациях в 2022 го и в 2023 году будут ещё пользоваться Wndows7-32bit, многим лучще пользоватсья нотубуком, а там памяти им так мало. А монтажники пользуются нетбуками.
забвл спросить, жто в какой программе сделан десамблирвоание?
Isaev
(31.01.2021 в 14:26):
Это всё имключительно для крекеров... кому-то удобнее ломать х32, а кому-то x64 :)
ManHunter
(12.01.2021 в 00:17):
Rustamer, порог вхождения с каждым годом все ниже и ниже :( Оплачивать работу разных специалистов под разные платформы, естественно, выходит несоизмеримо дороже, чем нанять за коробку доширака студента, который слегка выучил JS/HTML/CSS или на чем там этот электрон вращается.
Rustamer
(11.01.2021 в 18:57):
Зачастую и лепить не нужно бывает. Тот же дотнет делает максимум за нас из коробки. И чистый x86 получим лишь при специальном желании/необходимости. Бывает пралы и либы сторонние уже на x64 только затаргетены. Это же самый простой способ решения проблемы с OutOfMemoryException :) Да и сейчас у многих людей уже оперативки дофига. Лучше бы имхо массового Electron-а было в нашей жизни меньше. Слишком много этой гадости развелось - половина программ уже на нем сидит.
ManHunter
(11.01.2021 в 17:06):
Добавил для себя шпаргалку, как удалить движущиеся объекты в фотошопе. Действие не самое частое, но иногда бывает нужно.
Аноним
(11.01.2021 в 15:16):
Если это софт, потенциально интересный атакующему (например, браузер), то смысл есть. К 64-разрядным процессам современные винды применяют более лучшие техники безопасности.
ManHunter
(11.01.2021 в 07:42):
В целом соглашусь, но конкретно в этом случае приятным бонусом идет именно 32-битная версия, так как при обработке пачки фотографий память выжирается просто как из пулемета.
"Так могу, вот так могу, и так могу" (ц)ТикТок
user
(11.01.2021 в 04:45):
Вообще, касательно прикладных програам,
- непонятно, зачем множить сущности и лепить добавочные х64-версии.
Это может понадобиться только при необходимости использовать
непрервные блоки памяти размером больше 4Gb.
Других причин, кроме задротства, не наблюдается.
Софт, где реально используется адресация х64,
уже выпускается только для платформы x64, без дубликации для x32.
- непонятно, зачем множить сущности и лепить добавочные х64-версии.
Это может понадобиться только при необходимости использовать
непрервные блоки памяти размером больше 4Gb.
Других причин, кроме задротства, не наблюдается.
Софт, где реально используется адресация х64,
уже выпускается только для платформы x64, без дубликации для x32.
Добавить комментарий
Заполните форму для добавления комментария