warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Наши современники вряд ли с ходу скажут, где и как сегодня применяется защита StarForce. Тем не менее система успешно пережила все мировые и отечественные кризисы и не только не забросила свою нишу, но и освоила сопутствующие — привязку программного обеспечения к компьютеру заказчика, защиту и обфускацию исходного кода и так далее. Но в этой статье я хочу поговорить все же о традиционной области деятельности StarForce, а именно о защите программного обеспечения от копирования и несанкционированного распространения. Решение, которое реализует эту функцию, называется StarForce ProActive.
Сегодня мы вкратце разберем его особенности, сильные и слабые стороны, а в завершение по традиции я расскажу о простом, не требующем серьезных знаний и профессиональных инструментов способе сбросить триал в продуктах с этим типом защиты. Надеюсь, джедаи из StarForce примут к сведению эту информацию, пофиксят уязвимость и придумают еще что‑нибудь интересное на радость исследователям.
Итак, попробуем вживую пощупать какую‑нибудь программу, защищенную при помощи StarForce ProActive. Для начала убедимся, что перед нами именно StarForce, а не что‑нибудь иное. Для этого воспользуемся простым и доступным инструментом под названием Detect It Easy.
Если ты почему‑то не смог скачать актуальную версию Detect It Easy (например, злой провайдер отрубил тебе интернет), можно воспользоваться и другими популярными вьюверами EXE PE вроде hiew, CFF Explorer и им подобных. В этом случае признаком присутствия в исследуемом файле StarForce ProActive могут служить специфические секции в хидере запускаемого модуля (.
или .
в более старых версиях защиты). Вдобавок обычно рядом с защищенной программой лежит библиотека с именем из непроизносимого сочетания символов или с более простым наименованием — protect.
. В любом случае в ней будут присутствовать экспортируемые функции такого вида:
PSM_0
PSA_CheckFeaturesGrantedByLicense
PSA_DummyFunction
PSA_GetFeaturesGrantedByLicense
PSA_GetLicenseConfirmationTime
PSA_GetLicenseConfirmationTimeLimit
PSA_GetLicenseCreationDateTime
PSA_GetLicenseExecutionTimeLimit
PSA_GetLicenseExpirationDateTime
PSA_GetLicenseInformation
PSA_GetLicenseLifeTimeLimit
PSA_GetLicenseNumberOfRunsLimit
PSA_GetLicenseStartDateTime
PSA_GetLicenseStoragePath
PSA_GetNumberOfConnections
PSA_GetRemainingExecutionTime
Помимо упомянутой библиотеки, разработчики любят класть в рабочий каталог программы старфорсовский модуль активации лицензии (обычно он имеет название pcnsl.
). Этот модуль тоже содержит перечисленные выше экспортные функции и снабжен милой иконкой в виде золотого ключика.
И библиотека, и активатор по каким‑то непонятным соображениям упакованы знаменитым UPX, однако не спеши радостно их распаковывать. Ибо распакованная библиотека тут же перестает быть для программы родной: как и у любой другой «взрослой» защиты, тут имеется контроль целостности.
Пробуем загрузить защищенное приложение в отладчик — например, в наш любимый x64dbg — и убеждаемся, что и тут все сурово: StarForce о нашем отладчике знает, о чем и сигнализирует в окошке сообщения.
Обычно в подобных случаях помогает специальный плагин к x64dbg — ScillaHide. Но на этот раз он бессилен: хоть он и спасает от этого окошка, однако отладчик с грохотом падает, столкнувшись с безумным кодом внутри библиотеки, причем даже не дойдя до распаковки кода программы. Любопытно, что x64dbg успешно подключается к активной задаче (если, конечно, установить соответствующий флажок в ScillaHide), при этом в памяти процесса можно найти фрагменты расшифрованного кода, однако прервать выполнение нельзя — отладчик выдает ошибку приостановки потока. При попытке поставить точку останова на фрагмент расшифрованного кода или функцию из внешней библиотеки приложение завершается. Дампить активный процесс внешним дампером или «Сциллой» тоже без толку: на выходе все равно получается запакованный и зашифрованный модуль.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»