Исследование защиты программы Advanced Find and Replace
Скриншот программы Advanced Find and Replace
Advanced Find and Replace, как можно догадаться из названия, предназначена для поиска и пакетной замены строк в текстовых файлах и документах. Работает шустро, поддерживает различные опции поиска, в том числе и регулярки. Только расценки за всю эту красоту вообще зашкаливают. Если отстегивать деньги за каждую хорошую программу, то можно остаться без штанов.
Скачиваем с офсайта дистрибутив, устанавливаем, запускаем. Под верхним меню сразу обнаруживается надпись, что жить программе осталось недолго. Исполняемый файл ничем не упакован, отправляем его в дизассемблер. Параллельно поищем строчки из этого нехорошего сообщения.
Строки сообщений в файле
Рядом обнаруживаются другие интересные строчки, например, что время истекло и надо в натуре это купить, а также наименования разных типов лицензий. Дизассемблер закончил создание листинга, давайте посмотрим, где формируются названия лицензий.
Code (Assembler) : Убрать нумерацию
- CODE:005C53F9 mov dl, 1
- CODE:005C53FB mov eax, off_5B1FF4
- CODE:005C5400 call sub_488548
- CODE:005C5405 mov edx, ds:off_6022E0
- CODE:005C540B mov [edx], eax
- ; Проверить статус регистрации
- CODE:005C540D cmp byte ptr [ebx+640h], 0
- ; Регистрации нет, вывести остаток дней
- CODE:005C5414 jz loc_5C553D
- CODE:005C541A xor edx, edx
- CODE:005C541C mov eax, [ebx+3DCh]
- CODE:005C5422 call sub_467FA8
- CODE:005C5427 xor edx, edx
- CODE:005C5429 mov eax, [ebx+3B8h]
- CODE:005C542F call sub_47F974
- CODE:005C5434 xor edx, edx
- CODE:005C5436 mov eax, [ebx+43Ch]
- CODE:005C543C call sub_47F974
- CODE:005C5441 xor edx, edx
- CODE:005C5443 mov eax, [ebx+3BCh]
- CODE:005C5449 call sub_47F974
- CODE:005C544E xor edx, edx
- CODE:005C5450 mov eax, [ebx+3B4h]
- CODE:005C5456 call sub_47F974
- CODE:005C545B mov eax, ds:off_602178
- CODE:005C5460 push eax
- CODE:005C5461 mov eax, ds:off_6024E4
- CODE:005C5466 push eax
- CODE:005C5467 mov ecx, ds:off_602318
- CODE:005C546D mov edx, ds:off_602628
- CODE:005C5473 mov eax, [ebp+var_C]
- CODE:005C5476 call sub_5B1BA0
- CODE:005C547B mov eax, ds:off_602178
- CODE:005C5480 mov eax, [eax]
- CODE:005C5482 call sub_40B3EC
- CODE:005C5487 sub eax, 2
- CODE:005C548A jz short loc_5C5494
- CODE:005C548C dec eax
- CODE:005C548D jz short loc_5C54A3
- CODE:005C548F dec eax
- CODE:005C5490 jz short loc_5C54B2
- CODE:005C5492 jmp short loc_5C54C1
- CODE:005C5494 ; --------------------------------------
- CODE:005C5494 loc_5C5494:
- CODE:005C5494 lea eax, [ebp+var_8]
- CODE:005C5497 mov edx, offset aProfessional ; "Professional"
- CODE:005C549C call sub_405240
- CODE:005C54A1 jmp short loc_5C54CE
- CODE:005C54A3 ; --------------------------------------
- CODE:005C54A3 loc_5C54A3:
- CODE:005C54A3 lea eax, [ebp+var_8]
- CODE:005C54A6 mov edx, offset aSite ; "Site"
- CODE:005C54AB call sub_405240
- CODE:005C54B0 jmp short loc_5C54CE
- CODE:005C54B2 ; --------------------------------------
- CODE:005C54B2 loc_5C54B2:
- CODE:005C54B2 lea eax, [ebp+var_8]
- CODE:005C54B5 mov edx, offset aWorld ; "World"
- CODE:005C54BA call sub_405240
- CODE:005C54BF jmp short loc_5C54CE
- CODE:005C54C1 ; --------------------------------------
- CODE:005C54C1 loc_5C54C1:
- CODE:005C54C1 lea eax, [ebp+var_8]
- CODE:005C54C4 mov edx, offset aPersonal ; "Personal"
- CODE:005C54C9 call sub_405240
- CODE:005C54CE loc_5C54CE:
- CODE:005C54CE mov eax, ds:off_6022E0
- CODE:005C54D3 mov eax, [eax]
- CODE:005C54D5 mov eax, [eax+344h]
- CODE:005C54DB xor edx, edx
- CODE:005C54DD call sub_467FA8
- CODE:005C54E2 mov eax, ds:off_6022E0
Code (Assembler) : Убрать нумерацию
- CODE:005C521F call sub_4051FC
- CODE:005C5224 mov eax, ds:off_6024E0
- CODE:005C5229 mov edx, offset aSoftwareAdva_2
- ; "Software\\Advanced Find and Replace 8"
- CODE:005C522E call sub_4051FC
- CODE:005C5233 mov eax, ds:off_6025CC
- CODE:005C5238 mov edx, offset aAfr8_0 ; "afr8"
- CODE:005C523D call sub_4051FC
- CODE:005C5242 lea eax, [ebp+var_C]
- CODE:005C5245 call sub_5BF804
- CODE:005C524A lea eax, [ebp+var_C]
- CODE:005C524D call sub_5B1B84
- CODE:005C5252 mov eax, [ebp+var_C]
- CODE:005C5255 call sub_405478
- CODE:005C525A test eax, eax
- CODE:005C525C jle short loc_5C5267
- CODE:005C525E mov byte ptr [ebx+640h], 1
- CODE:005C5265 jmp short loc_5C528E
- CODE:005C5267 ; --------------------------------------
- CODE:005C5267 loc_5C5267:
- CODE:005C5267 mov byte ptr [ebx+640h], 0
- CODE:005C526E mov eax, ds:off_602224
- CODE:005C5273 mov dword ptr [eax], 15h
- CODE:005C5279 call sub_5BF678
- CODE:005C527E mov eax, ds:off_6027AC
- CODE:005C5283 cmp dword ptr [eax], 0
- CODE:005C5286 mov eax, ds:off_602940
Программа успешно "зарегистрирована"
После запуска все внешние упоминания о триальном режиме исчезли, перевод системной даты на пару месяцев вперед тоже не сказывается на работоспособности. Только вот окно "О программе" выглядит немного странно, ну да ладно, переживем. Цель достигнута.
Просмотров: 1880 | Комментариев: 4
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
voffka
(03.09.2020 в 16:00):
Андрей, Thaiphoon Burner вроде творил что-то такое с памятью, хотя автор софта сам та еще пасхалка.
ManHunter
(03.09.2020 в 12:16):
Сталкивался, такие приколы от разработчиков были даже во времена MS-DOS. Их, конечно, выявляли и чморили всем миром, потому что целостность файла даже у легального пользователя могла быть попорчена битой дискеткой, вирусом, необычной конфигурацией окружения и еще пачкой всяких прочих причин.
Андрей
(03.09.2020 в 12:07):
Спасибо за информацию.
Хотел задать вопрос.
Предыстория. В автоиндустрии полно специализированных программ. Которые так же имеют порой безумный ценник. Соответственно находятся энтузиасты, которые это дело поправляют. Так вот одна из фирм производящих данный софт, додумалась до того, что встроила в свой код "пасхалку". Т.е. проверку на подлинность/целостность. При не прохождении которого, программа порет софт подключенного к ней автожелеза. Затирает настройки и адаптации.
Срабатывает пасхалка не сразу, а по прошествии некоторого времени. И видимо не всегда. Т.е. действие её не очевидно. Поэтому ломанный софт успел разойтись по сообществам и наделать делов.
Собственно вопрос. В компьютерной индустрии с таким приемом ещё не сталкивались?
Хотел задать вопрос.
Предыстория. В автоиндустрии полно специализированных программ. Которые так же имеют порой безумный ценник. Соответственно находятся энтузиасты, которые это дело поправляют. Так вот одна из фирм производящих данный софт, додумалась до того, что встроила в свой код "пасхалку". Т.е. проверку на подлинность/целостность. При не прохождении которого, программа порет софт подключенного к ней автожелеза. Затирает настройки и адаптации.
Срабатывает пасхалка не сразу, а по прошествии некоторого времени. И видимо не всегда. Т.е. действие её не очевидно. Поэтому ломанный софт успел разойтись по сообществам и наделать делов.
Собственно вопрос. В компьютерной индустрии с таким приемом ещё не сталкивались?
Добавить комментарий
Заполните форму для добавления комментария
Была одна довольно популярная программка, так та сообщала,
мол "файл заражён вирусом" и тут же затирала MBR диска.
Конечно, это скотство, нормальный софт такого делать не должен.
Имиджевые потери таких хулиганов не тревожат,
а способа наказать их как-то иначе чаще всего не существует.