Как стать автором
Обновить

AppFuscator — облачная защита .NET

Время на прочтение2 мин
Количество просмотров5.1K
Привет Хабр! Мы плодотворно трудились над нашим продуктом, и сегодня я хочу поделиться новостями. Для тех, кто не читал предыдущих топиков (1 и 2), напомню, что мы разрабатываем онлайн сервис для защиты .NET приложений. Процесс обфускации происходит непосредственно в облаке по модели SaaS.

Расскажу немного о нововведениях.

Программа-клиент


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

obfuscation program C#

Программа распространяется как OpenSource (лицензия MIT), все желающие могут ознакомиться с исходниками. В дальнейшем, мы планируем вынести API в отдельный модуль, для легкой интеграции с другими программами.

Программа пока бета, заранее приносим извинения за возможные баги.

Control flow obfuscation


В AppFuscator добавлен новый алгоритм защиты Control flow obfuscation — запутывание потока управления. Суть этого метода заключается в разделении алгоритма программы на отдельные компоненты и построение из них сложно-связанного графа переходов. В итоге логику работы кода понять становиться весьма не просто.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии24

Система IEEE Software Taggant: защита от ложных срабатываний антивируса

Время на прочтение7 мин
Количество просмотров4.6K
image

В этом посте я хочу рассказать о системе IEEE Software Taggant, которую разработала рабочая группа IEEE по вредоносным программам в сотрудничестве с ведущими компаниями по информационной безопасности.
В планы команды разработчиков Guardant давно входило добавить поддержку IEEE Software Taggant в протектор Guardant Armor, и вот наконец мы это сделали. Краткий обзор системы и практические выводы перед вами.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии4

Geinimi: навороченный троян для Android

Время на прочтение2 мин
Количество просмотров9.2K
На китайских сайтах обнаружен интересный новый троян, который в английском варианте назвали Geinimi.

По признанию специалистов Lookout Mobile Security, «это самое изощрённое вредоносное ПО для Android среди всего, что попадалось до настоящего времени», потому что в предыдущих троянах не использовались такие способы маскировки. В частности, в Geinimi имеется готовый обфускатор байткода, а части программы зашифрованы, что существенно затрудняет исследователям возможности для анализа программы.
Читать дальше →
Всего голосов 39: ↑31 и ↓8+23
Комментарии67

Защита Android приложений от реверс-инжиниринга — ProGuard

Время на прочтение2 мин
Количество просмотров44K
ProGuard — это утилита для сокращения, оптимизации и обфускации кода. На выходе вы получаете *.apk меньшего размера, который намного сложнее реинжинирить. На developer.android.com написано, что ProGuard внедрен в систему сборки Android приложений. Однако, я заметил, что эта утилита появилась в моей папке с SDK только после обновления до r9.
Читать дальше →
Всего голосов 65: ↑55 и ↓10+45
Комментарии26

Cactus Obfuscator обфускатор JavaScript/CSS

Время на прочтение4 мин
Количество просмотров7.3K
Привет %username%,
Сегодня, я бы хотел, представить сообществу утилиту написанную мои другом Николаем Бабинским — Cactus Obfuscator.
Cactus Obfuscator — это трех-модульное приложение созданное для обфускации JavaScript и CSS кода.

Cactus Obfuscator использует:
Apache Maven — плагин для Maven версий 2-3.
YUI Compressor — js/css обфускация.
Simple XML — XML мэппинг и (де)сериализация.

Содержание:
1. Использование как Maven плагина.
2. Использование как консольного приложения.
3. Создание конфигурационных файлов(XML).


Cactus может использоваться, как Maven плагин в java-проектах, а так же, как консольная утилита.

Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии5

Неявные предикаты

Время на прочтение7 мин
Количество просмотров22K
Речь здесь пойдёт о некоторых аспектах компьютерной безопасности, связанных с запутыванием кода программы. Именно это мне было интересно в связи с разработкой обфускатора .NET приложений – программы для защиты .NET кода от взлома. Есть и другая – тёмная сторона: запутыванием кода очень интересуются разработчики вирусов и других нехороших штук, но нам они неинтересны.


Эмуляторы


Итак, Вы придумали супер алгоритм для запутывания кода программы. При декомпиляции код выглядит просто вырвиглазно и никто точно такое анализировать не будет. Казалось: победа! Но нет. Естественно обфусцированный код никто анализировать не будет… руками. Хакер поймёт как вы код запутывали и напишет «распутывалку». Если Ваш алгоритм был достаточно силён, то хакеру придётся писать собственный эмулятор, но и это не такая проблема как может показаться на первый взгляд – в сети есть доступные эмуляторы и даже специально написанные именно для целей взлома.

Из теории компьютерных наук известно, что не существует и никогда не будет существовать алгоритма, определяющего остановится ли программа или будет работать вечно – так называемая «проблема останова». Это гарантирует, что хакерский эмулятор, распутывающий обфусцированную программу, будет делать это как бы «локально»: он не сможет узнать состояние и значение всех переменных, задействованных в каждом участке кода и поэтому в точках условного ветвления часто будет полагать, что возможны все варианты хода программы. Вот тут-то на ум и приходит решение: запутанный код будет наполнен переходами по условиям, которые будут всегда истинны, но проэмулировать и понять это будет трудно. Примерно вот так:

if ((x+x & 1) == 0)
  good_code
else
  мусор


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

Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии31

Intel® Tamper Protection Toolkit — обфусцирующий компилятор и средства проверки целостности кода

Время на прочтение15 мин
Количество просмотров11K

Совсем недавно компания Intel выпустила очень интересный набор инструментов для разработчиков программного обеспечения, позволяющий добавить защиту программного кода от взлома и существенно усложнить жизнь взломщикам программ. Этот набор включает в себя обфусцирующий компилятор, средство для создания файла подписи, используемого для проверки целостности загружаемых динамических библиотек, а также библиотеку функций проверки целостности и дополнительные полезные инструменты. Intel® Tamper Protection Toolkit beta можно совершенно бесплатно скачать на сайте Intel.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии17

Шифрование отдельной части PHP-скрипта

Время на прочтение3 мин
Количество просмотров4K
Многие из тех, кто программируют на PHP, сталкивались с необходимостью шифрования своих скриптов в байткод для передачи на сторону. Слава богу, в наши дни существует огромный ассортимент PHP Encoder'ов, — как говорится, на любой вкус и цвет!

Мы же в своей работе столкнулись с нетривиальной задачей. Требовалось скрыть лишь некоторую часть кода, — функцию, содержимое которой не должен увидеть никто, кроме нас.

Читать дальше →
Всего голосов 33: ↑27 и ↓6+21
Комментарии20

Обфускаторы (и деобфускаторы) для .NET §0

Время на прочтение3 мин
Количество просмотров21K
Ни для кого не секрет, что из скомпилированных сборок (exe и dll) для платформы .NET может быть легко восстановлен код на языках высокого уровня (C#, VB.net). Это означает не только то, что если в программе имеется система лицензирования, то она может быть легко снята; но и то, что ваш исходный код могут скопировать, например, нечистые на руку конкуренты. Чтобы обезопасить себя от подобных угроз большинство разработчиков коммерческого софта используют разного рода обфускаторы.
Читать дальше →
Всего голосов 41: ↑27 и ↓14+13
Комментарии30

Perl write-only vs. JS write-only

Время на прочтение1 мин
Количество просмотров1.7K
Этот небольшой JavaScript Йосуке Хасегава выполняет alert(1):
(É=[Å=[],µ=!Å+Å][µ[È=-~-~++Å]+({}+Å) [Ç=!!Å+µ,ª=Ç[Å]+Ç[+!Å],Å]+ª])() [µ[Å]+µ[Å+Å]+Ç[È]+ª](Å)

Как это работает?
Читать дальше →
Всего голосов 86: ↑68 и ↓18+50
Комментарии38

Stringer Java Obfuscation Toolkit: защита Java и Android-приложений

Время на прочтение2 мин
Количество просмотров11K
Stringer Java Obfuscation Toolkit - Android ProtectionУважаемое Хабр-сообщество, хотел бы рассказать об одном из продуктов, который мы разрабатываем — Stringer Java Obfuscation Toolkit (https://jfxstore.com/stringer). Думаю многим Android и Java-разработчикам будет интересно, особенно, в свете подобных публикаций: habrahabr.ru/post/141522.

Сразу скажу, что решение коммерческое, чтобы сэкономить кому-то, из читающих этот пост, время.

За прошлый, почти полный, год, мы сделали довольно много интересных вещей:
  • У нас появилась поддержка платформы Android

Дальше!
Всего голосов 13: ↑7 и ↓6+1
Комментарии14

Против лома нет приёма: OpenJDK hack vs. Class Encryption

Время на прочтение5 мин
Количество просмотров8.6K
Цель этой статьи предостеречь разработчиков от использования обфускаторов с функцией шифрования class-файлов для защиты своих приложений и от бессмысленной траты денег на них.
Вопросы защиты байт-кода от реверс-инжиниринга и обхода этой защиты подробно рассмотрены в фундаментальной работе Дмитрия Лескова — Protect Your Java Code — Through Obfuscators And Beyond.
Механизм шифрования class-файлов предполагает, что содержимое классов хранится в зашифрованном виде, а при старте приложения через специализированный СlassLoader или JVMTI-интерфейс, расшифрованный байт-код грузится в виртуальную машину Java.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии16

Облачная защита для .NET приложений

Время на прочтение6 мин
Количество просмотров4K
просто облачко
Пожалуй, защита ПО всегда была для меня одной из самых любимых тем. Я обожал придумывать сложные хитроумные проверки лицензионности программы, и с упоением реализовывал их. Я всегда держался принципа, что хакер, чтобы взломать защиту, должен изучить максимум технологий использующихся в программе. Пусть думает о синхронизации потоков, если ему захотелось поставить бряк в алгоритме проверки ключа. Пусть изучает вопросы подсчета COM ссылок, если он хочет вмешаться в мой алгоритм. Пусть думает о том, как представлены битовые карты изображений в памяти, если он решил разобраться, как я сохранил данные ключа.

Да, C++ был почти идеальным языком в этом плане. Но времена меняются, старые технологии уходят и на их место приходят новые более продуктивные и удобные. Так наша команда перешла на .NET. Но в обмен на простоту разработки и удобство отладки, мы в придачу получили в довесок и простоту декомпиляции нашего ПО. Теперь хакер мог не просто обойти лицензионные ограничения, но и получить почти полный исходник нашей программы просто скормив ее рефлектору.
Разумеется, в качестве решения этой проблемы на рынке было представлено множество различных обфускаторов. Но, как ни странно, большинство из них разочаровывали меня сразу с двух сторон: и ценовой политикой (даже минимальная лицензия некоторых превосходила стоимость нашего ПО в несколько раз), и «интеллектуальностью» алгоритма. Так, после некоторых обфускаторов, умудрялись падать даже простые WinForms приложения. Что же касалось WPF, то без долгого-долгого черного шаманства над эксклудами, запустить среднего размера программу не представлялось возможным в принципе.

Так сформировалось понимание проблемы и четкое желание создать свой продукт, сводящий озвученные выше проблемы к минимуму. И появился SaaS обфускатор и протектор .NET кода AppFuscator.com

Обфускатор и протектор .NET кода appfuscator


Читать дальше →
Всего голосов 50: ↑39 и ↓11+28
Комментарии37

Защита в облаках: AppFuscator 2.0

Время на прочтение3 мин
Количество просмотров1.8K
И вот минуло уже почти три месяца с момента нашего первого анонса облачная защита для .NET приложений. Все это время мы не теряли времени даром и активно работали над улучшением нашего продукта. В выявлении приоритетных направлений и обнаружении наиболее острых проблем нам очень помогло активно включившееся в испытания первой публичной версии хабросообщество. Большое спасибо Вам, от лица нашей команды!

В новой версии



Новое ядро WPF обфускации

  • Теперь классы, задействованные в WPF, не исключаются, а обфусцируются наравне со всеми остальными. WPF ресурсы при этом пересобираются
  • Поддерживается линкинг сборок содержащих WPF (что невозможно сделать в ILMerge)
  • Умные автоматические исключения классов и полей недопустимых к переименованию, в том числе для сложных выражений типа PropertyPath
  • BAML ресурсы переименовываются


image

(нажмите для увеличения)

Поддержка Unity 3D

  • Переименовываются все внутренние методы, поля и классы
  • Поддерживаются все режимы, включая String Encryption, External Method Call Hiding, Decomposition

Для того, чтобы защитить Unity 3D приложение, достаточно отправить на обфускацию сборки с пользовательским кодом из папки Managed, и затем заменить их на защищенные версии.

Полная совместимость с .NET Framework 4.5

  • Теперь обфускатор одинаково хорошо работает с .NET 2.0, 3.0, 3.5, 4.0, 4.5.
  • Корректно обфусцируется код с async/await
  • Осуществлен переход на последнюю версию Mono Cecil


Читать дальше →
Всего голосов 2: ↑1 и ↓10
Комментарии0