Исследование защиты программы USBFlashCopy
Скриншот программы USBFlashCopy
Программа USBFlashCopy предназначена для автоматического создания резервных копий данных с Flash-накопителей при подключении их к компьютеру. Резервная копия создается в фоновом режиме, возможны настройки для копирования файлов только отдельного типа, например, картинки или документы. Блин, да кого я обманываю... Программа USBFlashCopy предназначена для скрытого копирования информации с чужих флешек при подключении их к вашему компьютеру, например, файлов с паролями, личных фотографий, документов и других данных на ваш выбор. В бесплатном режиме на экране показывается окно с прогрессом копирования, которое невозможно закрыть, а также при каждом подключении носителей выдается окно с запросом настроек копирования. Чтобы убрать все палево и работать в скрытом режиме, требуется регистрация. Естественно, не бесплатная.
Программа портативная, не требует установки, поэтому качаем с офсайта один исполняемый файл. Никаких навесных защит на нем нет, поэтому сразу отправляем его в дизассемблер, а сами смотрим, как программа ведет себя в бесплатном режиме, и какие основные отличия от платного. Одно из основных отличий - в меню, которое появляется при клике на иконку в трее, отключены пункты "Go Silent", который отвечает за переход программы в скрытный режим, и "Hide/show backup progress", который скрывает окно с процессом
Пункт меню отключен
Очевидно, что в программе должны выполняться манипуляции с этими пунктами, а именно активация или отключение, в зависимости от наличия регистрации. Открываем файл в редакторе ресурсов, ищем в нем описание меню, чтобы узнать идентификаторы пунктов.
Описание меню в ресурсах
Интересующие нас значения - это 32798 (801Eh в шестнадцатеричной системе счисления) и 32795 (801Bh). Теперь поищем в листинге дизассемблера какие-нибудь действия, производимые с этими идентификаторами.
Code (Assembler) : Убрать нумерацию
- ...
- .text:00408AC0 push 0
- .text:00408AC2 lea ecx, [esp+538h+var_258] ; void *
- ; Вызвать какую-то функцию какой-то проверки
- .text:00408AC9 call sub_4021B0
- .text:00408ACE mov esi, [esp+538h+hMenu]
- .text:00408AD2 add esp, 4
- ; Если она вернула EAX=0, то переход
- .text:00408AD5 test eax, eax
- .text:00408AD7 jz short loc_408AF3
- .text:00408AD9 mov edi, ds:EnableMenuItem
- ; Отключить пункт меню "Go Silent"
- .text:00408ADF push 1 ; uEnable
- .text:00408AE1 push 801Bh ; uIDEnableItem
- .text:00408AE6 push esi ; hMenu
- .text:00408AE7 call edi ; EnableMenuItem
- ; Отключить пункт меню "Hide/show backup progress"
- .text:00408AE9 push 1 ; uEnable
- .text:00408AEB push 801Eh ; uIDEnableItem
- .text:00408AF0 push esi ; hMenu
- .text:00408AF1 call edi ; EnableMenuItem
- .text:00408AF3 loc_408AF3:
- .text:00408AF3 mov eax, hWnd
- .text:00408AF8 mov ecx, [esp+534h+Point.y]
- .text:00408AFC mov edx, [esp+534h+Point.x]
- .text:00408B00 push 0 ; LPTPMPARAMS
- .text:00408B02 push eax ; HWND
- .text:00408B03 push ecx ; int
- .text:00408B04 push edx ; int
- .text:00408B05 push 102h ; UINT
- .text:00408B0A push esi ; HMENU
- .text:00408B0B call ds:TrackPopupMenuEx
- .text:00408B11 mov esi, eax
- .text:00408B13 cmp esi, 8006h
- ...
Code (Assembler) : Убрать нумерацию
- ...
- ; Инициализация хэша MD5
- .text:00402351 mov [esp+3DCh+var_3B8], 67452301h
- .text:00402359 mov [esp+3DCh+var_3B4], 0EFCDAB89h
- .text:00402361 mov [esp+3DCh+var_3B0], 98BADCFEh
- .text:00402369 mov [esp+3DCh+var_3AC], 10325476h
- ...
- ; Работа с временем системы
- .text:00402487 lea ecx, [esp+3C8h+SystemTime]
- .text:0040248B push ecx ; lpSystemTime
- .text:0040248C call ds:GetLocalTime
- .text:00402492 lea edx, [esp+3C8h+FileTime]
- .text:00402496 push edx ; lpFileTime
- .text:00402497 lea eax, [esp+3CCh+SystemTime]
- .text:0040249B push eax ; lpSystemTime
- .text:0040249C call ds:SystemTimeToFileTime
- .text:004024A2 movzx edx, word ptr [edi+2Eh]
- .text:004024A6 lea ecx, [esp+3C8h+var_3B8]
- .text:004024AA push ecx ; lpFileTime
- .text:004024AB push 0 ; wFatTime
- .text:004024AD push edx ; wFatDate
- .text:004024AE call ds:DosDateTimeToFileTime
- ...
Пункт в окне выбора профиля активирован
В окне выбора профиля исчезла информация о необходимости приобретения ключа для перехода в скрытый режим. Все пункты в меню в трее разблокированы, доступны опции скрытия значка, а в окне настроек показывается информация о регистрации.
Программа успешно "зарегистрирована"
Но поскольку мы не знаем точно ни формата легального ключа, ни какие данные в нем содержатся, ни как он шифруется или проверяется, то вместо них показываются какие-то странные значения. Для красоты можно найти и отредактировать юникодную строку с шаблоном регистрационных данных:
Шаблон регистрационных данных
Можно вписать вместо нее свое имя, или оставить как есть, это уже на ваш выбор. Также оставляю на вашей совести то, для чего вы будете использовать эту программу.
Просмотров: 9845 | Комментариев: 13
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Yoshida
(04.04.2012 в 00:01):
Спасибо, по образу и подобию вылечил IrfanView.
Yoshida
(02.04.2012 в 09:52):
Да, 1 января 1601 года был замечательным днем. Кроме того, что светило солнце, он ознаменовал начало нового, 17 века, положил начало многим открытиям. И именно в тот день была зарегистрирована программа! Это ли не прекрасно?
ManHunter
(16.12.2011 в 11:19):
Здесь не стол заказов.
Петр
(16.12.2011 в 02:09):
Есть схожая бесплатная программа www.usbgrab.h16.ru
И ещё http://armsoft.ru/index.php?go=flashcop настроек больше, только тоже платная. Может отломаете?
И ещё http://armsoft.ru/index.php?go=flashcop настроек больше, только тоже платная. Может отломаете?
ManHunter
(01.12.2011 в 09:01):
Musika, если на чужом компе и флешка воткнута на видном месте, то смотреть, чтобы она не по делу не моргала. Но если у нехорошего человека есть немного мозгов, то он бы разместил порт для подключения где-нибудь в незаметном месте, под столом или за системником. Так что защиты нет. Еще как вариант хранить важные данные в архиве под паролем. Даже если и утянут, то не воспользуются.
Musika
(01.12.2011 в 00:09):
Приветствую,
Подскажите, что блокирует "работу" этой и подобной
этой программ.
Спасибо.
Подскажите, что блокирует "работу" этой и подобной
этой программ.
Спасибо.
CoStick
(30.11.2011 в 23:33):
Недавно искал подобное, надо было "забекапить" незаметно флэшку одного "товарища" нанятого на время... Нашел "Shadow Disk Copy v1.7" (на русском и бесплатно)- есть режим невидимого снятия образа (при этом флэшка подозрительно долго моргает своим индикатором) и режим при котором типа флэха проверяется антихвирем. Но увы, у "товарища" оказалась флэшка в 1500Гб, т.е. внешний жесткий диск и места физически куда это слить, тем более незаметно, не оказалось.
Never
(30.11.2011 в 15:25):
"Блин, да кого я обманываю" )))
Три года назад, когда искал что-то подобное, кажется ты мне ее и советовал.
Три года назад, когда искал что-то подобное, кажется ты мне ее и советовал.
Vnv
(29.11.2011 в 19:00):
Да, программка ломается одним байтом: .4022fd JMP 0040254c --> JMP 00402548 :)
Упс, очепятка. JMP 0040254A
Упс, очепятка. JMP 0040254A
ManHunter
(29.11.2011 в 17:39):
Ну только если погнулось прямоугольное выделение в XnView, в чем я сильно сомневаюсь. Отдых, отдых и еще раз отдых.
AyTkACT
(29.11.2011 в 17:37):
ManHunter, скрин с подписью "Пункт в окне выбора профиля активирован" - криво обрезан по левому краю или я уже засыпаю?
ManHunter
(29.11.2011 в 16:54):
Я начал переводить описание с офсайта, но потом одумался :)
AyTkACT
(29.11.2011 в 16:54):
>> ...предназначена для автоматического создания резервных копий данных...
Ага. Прям таки вижу как хомячки "бэкапят" чужие флешки.)))
Ага. Прям таки вижу как хомячки "бэкапят" чужие флешки.)))
Добавить комментарий
Заполните форму для добавления комментария