0,3
рейтинг
26 октября 2010 в 12:43

Разработка → Защита Win32 и .NET приложений: обзор протектора Themida (X-Protector)

Этот обзор посвящен Themida (в прошлом X-Protector), одному из самых мощных и надежных протекторов Win32 приложений. Поскольку Themida совсем недавно понадобилась мне для одного из моих приложений, я решил написать по ней небольшой обзор. Заодно попросил автора ответить на некоторые интересующие меня вопросы. Думаю, ответы будут вам тоже интересны. Результаты этого небольшого интервью ищите в конце статьи.

Хочу обратить внимание, что статья написана на базе Themida версии 2.1.3.30, последней на дату написания данного обзора. В ней появилось несколько новых возможностей по части макросов. Демка двухлетней давности с на официального сайта, их лишена.




Базовая информация



Фактически, существует четыре продукта на базе технологии Themida.

Basic версия от Professional отличается только отсутствием умения работать с .NET приложениями. Все, о чем дальше у нас пойдет речь, работает как в Themida, так и в WinLicense.
  • Themida – это сам протектор, который является основным предметом данной статьи.
  • WinLicense – это Themida с добавлением возможности защиты приложений на основе разного рода серийных номеров. SDK WinLicense сам умеет генерировать эти серийные номера, проверять их, безопасно хранить, привязывать к железу, создавать триальные серийники с истечением срока к указанной дате или через указанное число запусков, создавать приложения, защищенные паролем и так далее.
  • X-Bundler – это плагин для Themida и WinLicense, который позволяет вам встраивать в защищенное приложение внешние файлы. Например, можно встроить файл справки или *.mp3 файл. Причем, обращаться к этому файлу из приложения можно как к внешнему, лежащему на диске. Приложение и знать не будет, что файл защищен Themida и находится внутри вашего *.exe. Также можно встроить сборки, используемые .NET приложением, внутрь основного *.exe файла.
  • WinLicense DLL Control – это плагин для WinLicense, с помощью которого можно реализовать свои варианты защиты на базе серийных номеров.
  • CodeVirtualizer – это маленький независимый кусочек Themida, который позволяет исключительно преобразовывать указанные функции внутри вашего приложения в код для виртуальной машины Themida. Никакой другой защиты он не обеспечивает (защиты от отладки, шифрования, проверок целостности и прочего в нем нет). Позволяет защищать как x32, так и x64 приложения, включая драйверы.

Возможности автоматической защиты Themida


Сначала о «скучных банальностях».
  • Антиотладчик. Поддерживается как обнаружение стандартных отладчиков, так и отладчиков уровня ядра. Есть также режим агрессивного поиска, но в этом случае приложение может отказаться запускаться на компьютерах с активными антирусами, руткитами или под Wine.
  • Антидампер. Themida защищает приложения постоянно. Дамп памяти приложения на диск с последующим запуском не снимет защиту (кто бы сомневался.… Такие примитивные методы уже давно не работают)
  • Обфускация точки входа (OEP). Themida прячет точку входа в библиотеку или приложение.
  • Шифрование ресурсов. Если в ваше приложение включены какие-либо ресурсы (иконки, файлы и так далее), они будут зашифрованы и расшифрованы только при обращении к ним.
  • VMWare/VirtualPC совместимость. Можно активировать этот режим для того, чтобы защищенное приложение могло запускаться под гипервизорами.
  • Заворачивание обращений к API Windows. Themida прячет информацию о функциях Windows API, которые вызывает ваше приложение. Информация о требуемых для запуска библиотеках также недоступна взломщику.
  • Защита приложения от модификации. Themida может проверять целостность приложения при его запуске, не позволяя запуститься измененной копии приложения. Можно активировать режим, при котором приложение после защиты можно будет беспрепятственно подписать .
  • Защита памяти приложения от модификации в процессе выполнения (полезно, если вы разрабатываете, например, игру).
  • Технология мутации кода. Весь код ядра Themida, который связывается с вашим приложением, подвергается мутации и «размазыванию». Каждый раз этот код генерируется заново, используя техники виртуализации (см. далее).
  • Защита от мониторинга файлов и реестра. Themida не позволяет внешним программам отслеживать обращения защищенного приложения к файлам или реестру.
  • Сжатие. Наложение защиты приводит к довольно сильному увеличению размера исполнимого файла на диске. Для уменьшения этого размера Themida поддерживает сжатие как самого приложения (со встроенным кодом защиты), так и его ресурсов.
  • Themida умеет защищать формы Delphi/C++ Builder от специальным образом. Содержимое форм (фактически, *.dfm файл) нельзя будет извлечь как из *.exe, так во время выполнения приложения.

Практически все описанные возможности можно включать/отключать по вашему желанию.

Технология CodeReplace


Технология CodeReplace извлекает части приложения, вставляет вместо них мусорный код, смешивает оригинальный код с кодом защиты и хранит его в другом месте приложения. При запуске участка кода, защищенного CodeReplace, после многочисленных проверок, он извлекается и расшифровывается. После выполнения опять заменяется мусором. Themida может сама проанализировать ваше приложение и выбрать кажущиеся ей подходящими для такой защиты функции. Но будет лучше, если вы сделаете это сами с помощью макросов (о них речь пойдет далее).



Виртуальная машина


Виртуальная машина Themida – один из самых сильных способов защиты приложения. Суть его состоит в том, что части вашего кода заменяются сгенерированным ассемблерным кодом, но не родным для Intel процессоров, а кодом для абстрактного виртуального процессора со своей системой команд и внутренней структурой. Themida каждый раз случайным образом генерирует план его архитектуры. Таким образом, в коде защиты становится сложно разобраться.
Themida поддерживает несколько типов виртуальных процессоров:
  • CISC. Базовая защита, защищенный код относительно быстро выполняется.
  • CISC-2. Расширенная защита, код занимает больше места, чем в случае CISC. Чуть более медленный.
  • RISC-64. Каждая виртуальная инструкция занимает 64 бита, защита сильнее, чем у CISC, но защищенный код выполняется медленно.
  • RISC-128. Усовершенствованный супермедленный и суперзащищенный вариант RISC-64

Для CISC процессоров поддерживается одновременное встраивание в защищенное приложение нескольких виртуальных процессоров одного типа, но с разной системой команд. Это повышает защиту, но увеличивает размер исполняемого кода приложения.

Генерация шума позволяет смешивать производящие полезную работу инструкции с ничего не значащими для еще большего затруднения работы хакеру.

Как и в случае с CodeReplace, Themida может сама выбрать, какие функции внутри вашей программы защитить преобразованием в код для виртуальной машины. Но лучше сделать это самостоятельно (см. далее).



Прочее


  • Themida позволяет прятать приложение от PE-сканеров, которые определяют, чем защищено приложение.
  • Доступны возможности локализации интерфейса приложения (окна с ошибками и системными сообщениями) и вставка заставок (все же время запуска защищенного приложения увеличивается на 500-5000 миллисекунд в зависимости от настроек защиты, надо чем-то занять пользователя в это время).
  • Themida поддерживает управление с командной строки, что позволяет интегрировать ее в Build-систему.

Теперь чуточку о грустном. Если даже вы используете все, что перечислено выше, ваше приложение все равно могут разломать. Чтобы максимально затруднить работу хакеру, следует использовать макросы Themida. О них сейчас и поговорим.

Макросы Themida.


Макросы Themida – это последовательности байт, встраиваемые в приложение, которые никак не влияют на его работу до тех пор, пока вы не защитите приложение Themida. Они имеют для протектора специальное значение. Фактически, они информируют Themida о тонкостях внутренней структуры вашего кода, позволяя эффективнее защищать его.
Макросы имеют маркеры начала и конца, определяя объем исходного кода, к которому они применяются. Готовые макросы в SDK есть для ассемблера, C, D, Delphi и VisualBasic / Pure Basic. Но в принципе, их можно за две минуты переделать под любой язык, который поддерживает ассемблерные или просто байтовые вставки в код. Здесь я буду использовать Delphi синтаксис, который мне наиболее близок.

Внимание! В приложениях .NET и в приложениях Visual Basic, скомпилированных в P-код, макросы использовать нельзя.

VM


Макрос VM ограничивает область кода, который Themida должна виртуализировать (превратить в инструкции для виртуальной машины, настройки которой вы задаете в интерфейсе). Используется следующим образом:

{$I VM_Start.inc}
// код программы
{$I VM_End.inc}


В этот макрос рекомендуется заворачивать участки кода, алгоритм которых представляет особую секретность. Например, проверка ключа активации, расшифровка файлов данных, проверка наличия ключа защиты и так далее.

Ограничения:
  • Непосредственно внутри блока не должно быть работы с исключениями (try, raise)
  • Внутри блока нельзя использовать другие макросы


VM_WithLevel


Макрос во всем подобен макросу VM, но обеспечивает дополнительную защиту, увеличивая уровень виртуализации на заданную вами величину. Используется он также. Для указания требуемого уровня виртуализации придется отредактировать соответствующий *.inc файл в Delphi (см. комментарий в нем). Большое значение уровня виртуализации приведет к сильному раздуванию кода. При уровне 0, макрос ведет себя так же, как макрос VM.

Ограничения такие же, как и у макроса VM.

CodeReplace


Макрос помечает код для обработки технологией CodeReplace, о которой мы говорили выше. Используется так же, как и макрос VM.
Ограничения такие же, как и у макроса VM.
Encode
Макрос отмечает блок кода, который требуется зашифровать и расшифровывать исключительно перед исполнением, зашифровывая назад при выходе из блока. Используется также, как и макрос VM. Этот макрос обеспечивает более слабую защиту, чем макросы VM и CodeReplace, но код под ним работает намного быстрее.

Ограничения:
  • Нельзя использовать в DLL
  • Внутри блока нельзя объявлять переменные или выходить из процедуры (return / exit)


Clear


Макрос отмечает блок кода, который будет удален из процесса после первого вызова. Этот макрос рекомендуется использовать для операций, которые ваша программа выполняет только один раз на запуск. Например, расчет сеансовых ключей для обмена данными или проверка наличия лицензионного ключа. Используется так же, как и макрос VM.

Ограничения:
  • Нельзя использовать в DLL


Unprotected


Помечает блок, который будет удален из приложения после защиты. Например, с его помощью можно сделать так, чтобы приложение сообщало, если оно не защищено. Используется также, как и все описанные макросы. Ограничений не имеет.

CheckProtection


В демонстрационной версии Themida этот макрос недоступен. Он используется для проверки корректности системы защиты приложения. Его использование лучше всего показать на примере, взятом из Themida SDK.
procedure TForm1.Button4Click(Sender: TObject);
var
  StatusProtection: Integer;
begin
    {$I CheckProtection_Prolog.inc}
    asm
      push $33333333
      pop  StatusProtection
    end;
    {$I CheckProtection_Epilog.inc}
    if StatusProtection = $33333333 then
      MessageBox(0, 'Protection OK.', 'Макрос проверки защиты', MB_OK + MB_ICONINFORMATION)
    else
      MessageBox(0, 'Защита приложения нарушена!', 'Внимание!', MB_OK + MB_ICONERROR);
end;

Вы определяете число (типа Integer/Cardinal), которое макрос должен вернуть в случае, если с защитой все в порядке. В этом примере 0x33333333. При наложении защиты ассемблерные инструкции push и pop будут удалены из программы. Вместо них будет вставлена сложная процедура проверки, которая вернет в указанной переменной (в нашем примере это StatusProtection) заданное вами число, только если не обнаружит нарушений защиты. В случае обнаружения нарушения системы безопасности, число будет случайным.

Разумеется, в реальной жизни так, как показано, использовать данный макрос нельзя. Самое простое – это взять любую, использующуюся в проекте важную константу, значение которой не слишком очевидно в контексте и заменить ее на переменную. Затем использовать данный макрос на этой новой переменной где-нибудь пораньше в коде. Если защиту снимут, значение этой константы / переменной окажется некорректным, что, скорее всего, приведет к краху приложения в самых неожиданных местах.

Внутри блока макроса не должно находиться ничего, кроме указанных ассемблерных инструкций.

CheckCodeIntegrity


В демонстрационной версии Themida этот макрос недоступен. Макрос очень похож на CheckProtection, просто работает с другой частью системы защиты. Его использование абсолютно аналогично.

CheckVirtualPC


В демонстрационной версии Themida этот макрос недоступен. Макрос похож на предыдущие два, но проверяет не наличие системы защиты, а запуск защищенного приложения под гипервизором вроде VirtualPC или VMWare. Его использование абсолютно аналогично. Разве что его стоит комбинировать с соответствующей галочкой в интерфейсе программы. Тогда в защищенном приложении при обнаружении запуска под гипервизором Themida выдаст предупреждение, а если под VirtualPC попытаются запустить вариант приложения со снятой частью защиты Themida, вас выручит макрос.

Особенности защиты .NET приложений.


Несмотря на то, что Themida умеет защищать .NET приложения, нужно иметь ввиду следующее:
  • После защиты .NET приложение (*.exe) перестает быть .NET сборкой и становится обычным приложением Win32 (c сохранением, впрочем, всех своих функций, проверялось на *.exe файле Paint.NET). Загрузить приложение как сборку .NET больше не получится. Разумеется, это препятствует работе утилит вроде ILDASM.
  • Макросы внутри .NET приложений не поддерживаются.
  • IL код внутри приложения остается нетронутым, хотя и шифруется, как и все содержимое *.exe файла. Его можно подвергнуть обработке обфускатором перед защитой Themida.
  • Защита отдельных сборок в виде *.dll пока не поддерживается. Впрочем, с помощью X-Bundler сборки можно просто интегрировать в основной *.exe файл.


Небольшое интервью с Рафаэлем


  • Какова была причина прекращения разработки X-Protector и выпуска Themida?
  • Несколько причин. X-Protector имел печальную известность из-за проблем с совместимостью. Мы хотели выпустить новый продукт, лишенный этих недостатков. Кроме того, несколько изменилась команда разработчиков.
  • Каковы ваши планы на Themida64 (поддержка защиты 64-разрядных приложений)?
  • Themida для x64 будет выпущена в ближайшие месяцы, а в самое ближайшее время ее уже получат наши бета-тестеры.
  • Каковы преимущества custom-билдов Themida?
  • К сожалению, в настоящее время мы не предоставляем такой услуги, хотя у нас есть некоторые возможности для покупателей со специфическими требованиями к совместимости
  • Я видел, что в файле справки упоминаются Wine и ReactOS. Неужели, приложения, защищенные Themida, работают в этих средах?
  • Да, приложения, защищенные нашим протектором должны успешно работать в этих средах. Таковы требования большого количества наших клиентов.
  • Использует ли Themida защиту на базе ring-0?
  • Какое-то время назад первые версии Themida действительно предлагали такую защиту. Но через какое-то время мы убрали использование ring-0 для увеличения совместимости с новыми версиями Windows, реализовав вместо нее защиту на базе виртуализации кода.
  • Themida – крайне мощный протектор. Но что вы думаете о подходе, который был реализован в ExeCryptor (код там не превращался в коды для виртуальной машины, а просто мутировал и усложнялся, оставаясь нативным для процессора).
  • Я думаю, что ExeCryptor все же имел свою виртуальную машину. Опкоды, которые можно было эмулировать – эмулировали. Те, которые нельзя – мутировали в x86 вариант. Во всяком случае, это то, что я слышал, точно я не знаю.
  • Каковы ваши планы на будущее Themida?
  • Вообще мы думаем о серьезном редизайне для еще большего усиления защиты. Но прежде всего, будет выпущена поддержка x64, и все последующие версии протектора будут поддерживать как x32, так и x64 приложения.


Владислав Раструсный @FractalizeR
карма
38,0
рейтинг 0,3
Веб-разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (119)

  • 0
    Хорошая статья, прекрасный протектор, ломать его очень тяжело.
    • 0
      Мне еще нравился ExeCryptor, но он почил в бозе…
      • +1
        Тяжело не почить, особенно когда для твоего прота есть автоанпакер.
        • 0
          Тот анпакер, о котором Вы говорите не решал всех вопросов с execryptor'ом, деобфускатора там нет, т.е. при грамотном подходе к защите распаковка практически не снижает защищённость приложения.
          • 0
            Мы оба про решение от RSI говорим? Относительно грамотного подхода к защите целиком согласен, народ покупает проты, но совершенно неадекватно их использует, так было еще со времен ASProtect'a, который, при грамотном подходе защищающего, тоже не просто снять.
            • 0
              Верно понял, мы говорим про анпакер от рси) аспр во все времена хорошо снимался, когда вм ввели были некоторые проблемы, но вм быстро расколупали и нормально декомпилируют сейчас.
              • +2
                Да ну вас, BiTHacK :) У вас, понятное дело, все просто снималось во все времена, а я тогда только начинал погружался в RE. Мое уважением вам и вашей команде.
          • 0
            Все, понял о чем вы. Действительно при грамотном подходе защищающегося анпакер не особо поможет, но когда прот тупо навешан? А таких примеров большинство. Мои задачи всегда покрывались, для меня самое важное — ресурсы приложения и анализ используемых технологий. Обычно это delphi application на который повесили то, что нашли в свободном доступе.
            • +1
              когда прот тупо навешан это во всех случаях заранее проигранная война, но если правильно использована вм или морф кода (хороший морф), тогда, как правило, на исследование уходит много времени (криптор ломается даже при грамотном навешивании, но исследовать километровые листинги очень проблематично, уходит порой несколько дней).
      • 0
        У него были большие проблемы с совместимостью. Сначала использовал ExeCryptor, но после многочисленных жалоб от пользователей перешел на Themida… о чем не желаю.
    • 0
      Не то чтобы очень тяжело, но довольно муторно и нудно.
      • 0
        Что именно? :)
        • 0
          Муторно и нудно восстанавливать после снятия Themida те вызовы API (преимущественно из ntdll и kernel32), которые были заменены на аналогичные по функциям из Themida, а так же восстанавливать те функции, которые в исходном коде были обёрнуты в CodeReplaceStart, EncodeStart, MutateStart и подобные. Сама же Themida снимается на раз-два-три в OllyDbg.
          • 0
            Я думаю, что навесная защита не представляет собой проблемы для опытного хакера не только в Themida. Во всех нормальных руководствах по защите об этом, пусть косвенно, но сказано.
            • 0
              Я и ответил на то, что «ломать его очень тяжело». Не тяжело, но муторно. Накрутили там конечно очень сильно. Но с каким-нибудь аппаратным хаспом-аладдином-сентинелем само собой не сравнить. Говорю как неопытный хакер :-) За Themida я берусь только в очень крайних случаях. За донглы USB не берусь вообще.
  • 0
    С MSBuild/NAnt умеет интегрироваться?
    • 0
      Думаю, вполне. Эти утилиты ведь позволяют запускать внешние приложения? Никаких специальных возможностей для интеграции в билд-утилиты Темида не имеет. Просто позволяет запустить процесс защиты с командной строки.
  • +2
    плохо, что x64 только планируется. несолидно
    к примеру VMProtect уже много лет поддерживает 64-бита
    • 0
      Сколько лет слышу о темиде — столько лет они все планируют добавить поддержку х64. Так что есть большая вероятность, что это так и останется несбывшейся мечтой Рафаэля.
    • 0
      Есть очень хороший и малоизвестный прот — Enigma Protector, на данный момент не слышно даже о его приватных анпакерах.
      enigmaprotector.com
      • 0
        Может, потому, что малоизвестный?
        • 0
          Скорее всего, просто не понятна причина отсутствия данной известности.
          • 0
            Тоже верно.
  • +2
    Я правильно понимаю, что сия вундервафля напрочь ломает совместимость с Mono? Если так, то ну его нафиг, у нас продукт под маки и линуха выпускается.
    • 0
      Если у вас продукт под Маки и под Linux, то Win32-only протектор вам точно не нужен :) Под Linux, правда, защищенное приложение можно будет под Wine запустить.

      Совместимость она не ломает, просто exe перестает быть .NET сборкой и начинает работать только под Win32 или эмуляторами.
      • 0
        Прога работает везде, куда можно воткнуть GTK#. Сейчас сидим на дотфускаторе, пока всем довольны. А по поводу wine, у вас же .NET всё равно используется как-то, а он под вайном пока что работает отвратительно.
        • 0
          Да, согласен. Но обфускация и то, что делает Themida — это принципиально разные вещи. Под .NET принципы Themida уже не работают. IL-то не виртуализируешь так, чтобы сборка осталась управляемой. Содержимое тоже не зашифруешь, чтобы сборка грузилась как .NET. Единственный выход — обфускация кода.
  • 0
    Интересно, сколько человек работают над протектором?
    • 0
      Честно говоря, до сих пор я думал, что один Рафаэль. Но, отвечая на один из моих вопросов, он упомянул про изменение в составе разработчиков… Так что теперь непонятно :)
      • +1
        Заменил дизайнера и переводчика хелпа :)
        • 0
          Да вот я думаю, наверное так оно и есть.
  • 0
    Снимают, только в путь. «Не панацея, к сожалению.» говорит моя светлая сторона. «Или к счастью» злорадно ухмыляется темная.
  • 0
    Проблема в том, что после обработки протектором, большинство антивирусов находит в файле ту или иную заразу. Выход — custom-билды. Точнее после многочисленных просьб разработчики могут скинуть специальную версию Themida с большим числом дополнительных параметров, изменяя которые, можно добиться требуемого результата (отсутствия ложных срабатываний). Но эту версию сначала надо допроситься, а потом еще найти нужную комбинацию параметров.
    • 0
      Большей частью эту сказку пустили вирусописатели. В большинстве взломщиков на самом деле есть трояны — это видно под виртуальной машиной и параноидальном режиме антивируса (если смотреть к каким компонентам ОС обращается взломщик). А на протекторы антивирусы срабатывают предупреждением о протекторе — сильно разные вещи.
    • 0
      Хех, особенно если паленый (скарженный / ломанный) прот используется. Все-таки с годами авторы крупных протекторов вроде бы нашли общий язык с АВ-индустрией.
      • 0
        Нашли. И очень забавно наблюдать софт ценой не один килобакс, который защищен хаканой фемидой. Ну, в общем они сами себе проблем тем самым создали.
        • 0
          Вот, о чем и речь, спасибо за пруф из первых рук :)

          А иначе и быть не могло, АВ же не монстры какие-то. Тем более это взаимовыгодное сотрудничество. Утек свежий билд вмпрота (к примеру), есть вероятность что киддисы будут его на свои поделки накладывать. Сигнатурки / ватермарки улетают от Дерматолога в Dr.Web, киддисы и нелегалы караются анально, мир спокойнее, все довольны.
          • 0
            Дык не поверят же! Шарашкины конторы (которые называть не будем ;-) могут детектить любую фемиду/вмпрот.
            • +1
              Пульните в личку, если не затруднит, кто это так умудряется. Детектят, мол, потенциально опасно / какой-нить генерик / или умудряются еще и в базе найти? ))
              • 0
                Да я б с радостью, да легальную фемиду мне найти, сами понимаете, не так просто сходу. Но точно видел детекты пакеров.
                • 0
                  Совершенно верно, детекты есть. Вроде PEID. Надо, кстати, проверить. Темида умеет прятаться от детекторов. В интерфейсе есть настройка. Проверю как-нибудь, насколько это эффективно.
                  • 0
                    PEiD то тут откуда? vilgeforce имел в виду среди АВ представителей.
    • 0
      Вообще, Themida подписывает каждый защищенный файл ключом владельца. Если владелец объявляет ключ украденным, Касперский, например, начинает обнаруживать в совершенно невинном файле Win32.Black.a. Если ключ белый, украденным не заявлен, большинство антивирусов реагирует нормально. Во всяком случае, Каспер — точно. Могу дать безобидный exe потестить.

      Разработчики протекторов тесно сотрудничают с производителями антивирусов и добавляют в свои антивирусные базы сигнатуры подписей ключей, заявленных как украденные.
      • 0
        Я уже 3 года являюсь владельцем лицензии на Themida, ни один раз общался напрямую с разработчиками. Свой ключ никому не давал. При проверки на virustotal программа без каких-либо заморочек собирала целую коллекцию «наград». В итоге, мне дали возможность изменять дополнительные параметры протектора. И только после многочисленных проб удалось нужной комбинацией параметров исключить ложные срабатывания. И периодически приходится их подкручивать.
        • 0
          Ну хоть вы то скажите, кто из списка virustotal'а палит лицензионно чистую Themid'у?
          • 0
            Вот сейчас создал пустую форму и обработал протектором. Загрузил файл на virustotal, жду, пока подойдет очередь (пока #3123). Как будет результат, скопирую сюда ссылку.
          • 0
            • 0
              Поскольку на VirusTotal очереди не дождаться, залил на VirScan.org. Результат — только два ложных детекта из 36.
            • 0
              А на кого вешали прот? На чистый каркас или реальное приложение? Думаю на реальной софтине (к примеру, delphi с кучей компонентов, fastmm, fastcode и madExcept'ом) может быть чууток иная ситуация по кол-ву фальш срабатываний, но приведенное вами все равно близко к реалиям. Спасибо, лишний раз убедился, что у нормальных АВ с нормальными протами все налажено как надо.

              PS. Sunbelt (ужос), версии 3.9.2456.2, сканировал ~23 ед. времени (судя по всему секунды!) и нашел троя с управлением по irc.
              • 0
                Просто на приложение с одной формой и одной кнопкой на форме. Я думаю, на любой софтине будет все примерно одинаково, поскольку все равно все шифровано внутри. Антивирусники ведь не загружают exe как Windows. В лучшем случае немного кода через эмулятор проца пропускают.
        • 0
          От кого награды-то были? Касперский, Веб и Аваст вроде бы без проблем пропускают. Кроме того, нужно обращать внимание, что именно детектит антивирус. Часто Themida определяется как Packed.Themida или просто Packed.XXX. Конечно же, это не вирус. Всякие упаковщики вроде Pklite тоже так определялись.
  • –3
    Весь мир движется в сторону открытости, OpenSource, новых моделей ведения бизнеса и получения прибылей — мы же упорно покупаем «протекторы», прячем свой код и сами себя загоняем в угол зависимостей. Just as planned.

    З.Ы. Очень уж холиварная заметка будет.
  • 0
    Протектор хорош, но его антивирусы не очень любят. А потом объясните клиенту почему.
    • 0
      Это решается. Не так легко, но решается:
      habrahabr.ru/blogs/infosecurity/106920/#comment_3367415
    • 0
      Вы пользователь лицензионной копии?
      • 0
        Я? яркий тому пример корейский NCSoft.
        • 0
          Античит темидой накрыт или что? с играми NCsoft знаком, но что именно вы имеете в виду?
          • 0
            на файлы приложения антивирусы ругаются. Это был лишь пример. Потом возникают лишние вопросы, что, почему срабатывает антивирус. Рядовым пользователям нужно само приложение, остальное их не волнует.
            • 0
              Прошу прощение, дайте более конкретный пример. Какой АВ и какие файлы какого приложения.
              • 0
                Eur. и Usa. игровой клиент Lineage, файл L2.exe, антивирус KIS. На данный момент точной информацией не владею.

                пробуйте Google «l2.exe themida virus»
    • 0
      Если только совсем уж от шарашкиных контор. Крупные вендоры детектят ломаную фемиду, кто ее юзает — ССЗБ.
  • +3
    Полностью его анпакать довольно сложно, хотя есть люди которые разбирают его по косточкам, starforce же trivium разобрали (кстати, большую роль там сыграл один российский реверсер).

    Последний раз я разбирался с winlicense версии 2.1.0.1 (вроде бы), инлайн патч HWID занял не слишком много времени, хотя там конечно не так все тривиально как во многих других протах.

    Один из самых сложных для разбора протекторов, из свободно продаваемых.
  • 0
    Ну… Не панацея. Дамп, конечно, работать не будет, но что-то и из дампа можно достать.
    • +1
      И что же вы будете из дампа доставать? :)
      • 0
        Строки, к примеру :-) Адреса, ключи реестра и прочие кошерные вещи.
        • +1
          Да ну вы что :), все ресурсы и строки шифруются.
          Все, что вы увидите в дампе — это пикод ВМ и тушку протектора.
          • 0
            Взял DLL, загрузил, дампанул PE Explorer'ом. Четко вижу, что это дельфятина, названия классов, строки и т.д.

            Themida Professional, 2010 и все такое.
            • 0
              Ну дык, там достаточно много опций защиты, в том числе антидамп, шифровка ресурсов, защита форм delphi в частности и многое другое. Что вас заставило думать, что ваша DLL протектилась со всеми опциями?
              • +1
                Что vilgeforce заставило думать, что она вообще протектилась, мне интересно?
                • 0
                  Мой опыт, использование ей в работе строки Themida Professional. Достаточно?
                  • 0
                    То есть, DLL, о которой речь идет, не была упакована протектором и вы просто положились на свой опыт?
                    • 0
                      «использование ей в работе строки Themida Professional» — было ведь написано. И как, кстати, определять наличие фемиды в упакованном файле, если приведенных критериев недостаточно? :-)
                      • 0
                        А что, PEiD в др. вебе не используют?
                        Насчет строки… не знаю, themida часто определяется тем, что он орет на отладчик и просит отправить письмо в ореанс, не любит драйвер filemon'а, рандомные имена секций… вообщем, вариантов много.
                        • 0
                          PEiD нам не нужен: 95% пакеров показывает сам движок, да еще и распаковывает автоматом. Остается Фемида, которую в эмуляторе видно сразу, Армадилло, который сигнатурно можно детектить и совсем уж экзотика.

                          В той DLL фемида была. Завтра специально посмотрю, кажись она через DbgPrint пишет про себя.
                          • 0
                            Да вообще, протекторы которые добавляют еще с мегабайт-два веса… вешать на зловреды… это моветон :)

                            Ну, а 95% пакеров… я так понимаю, это крипторы самописные?
                            • 0
                              Моветон, но есть троянцы бразильские, которые в паканом виде 7-8 метров занимают.
                              95% — это как что-то общеизвестное, PECompact, Yoda, aspack и иже с ними. Приватные по именам не детектим, ну их.
              • 0
                Ничего не заставляло. Я всего лишь сообщил об обычном явлении: возможности фемиду сдампить.
                • +1
                  Если быть поконкретнее — то что написано в ридми по поводу антидампа с приведенным скрином пустого хедера в памяти — остаток старого ридми xtreme protector'a, где это реализовывалось драйвером. Собственно толку от этого тоже получилось не много, ровно как и с CopyMem(II) у Armadillo — всё успешно дампилось внедрением дллки с дампером в сдампливаемый процесс.
                  • 0
                    Так они раньше что, тупо хидер обнуляли?
                    • +1
                      Нет — защита на чтение памяти/выдача нулей вместо реальных данных для любых процессов кроме текущего.
            • 0
              Скрин с опциями протекции у Themida покажите.
              А о каком дампе у PE Explorer'a идет речь, он же все в статике раскладывает, да и dll loader'у там взяться неоткуда.
              • 0
                Да откуда ж я его возьму? Троянописатели его со своими поделиями не распространяют :-(
                PE Explorer, да, мог с чем-то попутать. Сейчас не на работе, завтра точно скажу что там было. Каюсь, но дамп все равно был :-)
                • +2
                  Дампили вы поди с помощью PETools…
                  Вот вам протекченый виндовый калькулятор, со всеми опциями. (2.1.1.0)
                  можете глянуть на досуге… filebeam.com/99176d8610c4b73d3a8621569540fef6
                  • 0
                    Вероятно да. За калькулятор спасибо, завтра посмотрю как наша тулза с ним справиться и что в дампе будет.
                    • 0
                      Утилита говорите… хехе
                      Где-то был блокнот запакованный starforce v3, посмотрел бы я на вашу утилиту :)
                      может выложит кто-то, а то я не нашел.
                      • 0
                        Утилита фемиду проходит в автоматическом режиме до состояния, когда ее можно дампить, зря смеетесь :-)
                        • 0
                          Да не сомневаюсь, что у больших антивирусных компаний есть хорошие приватные утилиты для автоматизации, но генерик анпак и третий старфорс… не знаю, я видел приватные утилиты которые смогут анпакнуть starforce в автоматическом режиме, но только basic версию.
                          • 0
                            Старфорс я мог вообще не видеть. Он насколько распространен в среде не-разработчиков, его честно купивших?
                            • 0
                              Да вообще никак не распространен, они же протектят все исполнительные файлы — на своем сервере.

                              А как же так, не видеть? хотя бы ради чисто реверсерского интереса глянуть… крутой прот же, там даже если сдампишь — на другой машине не заработает :)
                              • 0
                                Я протекторы не особо люблю. Autoit делал, Exescript делал… Сейчас вот DEX андроидовский вялотечет… Я больше внутренности ковыряю у троянов, а не пакеры.
                  • 0
                    Проходится тулзой. Не автоматом, приходится иногда кнопочку жать, но проходится. DLL, кста, была более поздней версией защищена. В этом семпле 2009й год прописан:
                    Themida Professional
                    ©2009 Oreans Technologies
            • +2
              Я повседневно сталкиваюсь с протекторами и скажу одно — у темиды в ридми много преувличений/недароботок/старой инфы. Версия 2.1.1.0 отлично дампится, ровно как и распаковывается скриптом SnD от 9 октября, который в добавок отлично фиксапит коде реплейсы. А ВМ ручками разбирать, от этого никуда не деться, или же дампить ее отдельно и цеплять к уже обработанному ехешнику. Я практически уверен, что с 2.1.3.0 ситуация аналогичная.
  • 0
    зачем?
    • 0
      Вопрос не однозначный, да, всем ясно — если софт популярный… вы хоть solidshield, хоть starforce вешайте — не поможет.

      С другой, это все равно отсеивает часть любопытных, а например полностью декомпилировать пикод виртуальной машины это гораздо менее тривиальная задача, чем просто написать кряк… а значит код программы так просто посмотреть и изучить не получится.
      • –1
        Во времена SaaS, распределенных приложений и т.д. и т.п. ИМХО можно не заморачиваться такими вещами. Особенно если есть риск потерять часть пользователей потому что антивирус назвал ваш продукт трояном.
        Поправьте если я ошибаюсь, но вроде продукты топовых корпораций не «защищаются» таким образом, и ничего, зарабатывают вроде.
    • 0
      Затем, что это сильно затрудняет жизнь взломщикам. В области, в которой я работаю, правда, Themida одну не используют. Обычно на пару с донглом каким-нибудь, в который можно поместить часть логики работы (Ява карты обычно). Достаточно много проектов используют такую схему работы и зарабатывают довольно-таки большие деньги.
      • +1
        Вообще да, если часть кода выполняется на токене, то это довольно сильно затрудняет реверс, ибо когда на чипе стоит флаг, то прошивку его снять довольно сложно, хотя… хоть в России я подобных сервисов не видел, китайцы это делают.
        • 0
          Снять прошивку нормальной явакарты очень и очень трудно (если карта защищена, конечно). Думаю, такое под силу только высокотехнологичным институтам, которых в мире единицы. Некоторые явакарты используются Visa в качестве электронных кошельков, средств аутентификации, цифровых подписей и так далее. Во всяком случае, карты вроде Gemalto egate и Gemalto TOP не читаются.
          • 0
            А… так вы про смарт-карты, но ведь в плане выполнения кода — они довольно сильно ограничены? я говорил про чипы типа PIC, Atmel.
            • 0
              Да, производительность у них не ахти. Правда, за счет наличия криптографических сопроцессоров они все же полезны
  • –1
    Я так мыслю для .Net оно ничем не лучше других… а возможно и хуже.
    Жаль автор не описал подробные ее возможности с работы с Net.
    • +1
      А их там и нет, в данном случае прот работает лишь как оболочка и никак не встраивается в сам код. Возможно новые версии криптуют строки.
      • 0
        Они криптуют exe целиком. Отдельно внутри ничего не криптуется.
  • 0
    > Themida умеет защищать формы Delphi/C++ Builder от специальным образом.
    Все татарин кроме я
  • 0
    ёкарный буржуйский — как это произносится?
  • 0
    Themida довольно дорогое удовольствие, я выбрал отечественный VMProtect.
    • 0
      Почему дорогое? VMProtect Professional стоит 200$. Themida — 206$.
    • 0
      Когда у вмпорта появилась своя система лицензирования — стало идеальным решением на данный момент. Однозначно VMProtect.
  • 0
    Я тоже проголосую за VMProtect! Особенно за версию VMProtect SenseLock Edition (это версия с электронным ключом SenseLock). Закрывает продукт намертво :) Снимать даже никто не берется.
    • 0
      Год назад все же брались: cracklab.ru/f/index.php?action=vthread&forum=13&topic=14222
      • +1
        Где результат то?
        • 0
          В смысле? Был ведь результат на тот момент. Я не к тому, что VMProtect слабую защиту дает, а к тому, что все же берутся его ломать. Не такой уж он и неприступный совсем, чтобы никто даже не брался.

          Жаль, кстати, что поверх него больше Themida не положить. Раньше можно было…
        • 0
          Результат в декомпиляторе вм вмпротекта, публичных тулз не видел, но приватные есть. Аналогично для вм фимы.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.