Узнать чем обфусцирована программа

Попался мне на глаза ресурс, рекомендующий разные обфускаторы и деобфускаторы JavaScript. Решил проверить свои силы и самому поработать деобфускатором. А для проверки нашёл простенький вредоносный файлик.

Обфускаторы и деобфускаторы. Первые это приложения (также, утилиты, сервисы), которые изменяют код скрипта до неузнаваемости и усложняющие понимание кода, но при этом сохраняют его возможность всё также исполняться, а вторые — ровно наоборот, восстанавливают читаемость кода человеком.

Поиски сэмпла

Обычному смертному доступно не так много официальных ресурсов для поиска и получения вредоносного файла. Я воспользовался bazaar, где даже можно отфильтровать интересуемые файлики по разным параметрам. Вот прямая ссылка на страничку о сэмпле https://bazaar.abuse.ch/sample, где можно увидеть его хэши, кто и когда добавил его в базу, как детектируется и т.п..

Узнать чем обфусцирована программа

Надо выяснить программно сам факт обфускации. Неважно чем именно. Например, ildasm говорит «protected module». К чему можно привязаться?

Обфускация приложения #Java | Туториал обфускация.

Re: как узнать, что сборка обфусцирована?

Здравствуйте, MaxRos, Вы писали:

MR>Надо выяснить программно сам факт обфускации. Неважно чем именно. Например, ildasm говорит «protected module». К чему можно привязаться?

Help will always be given at Hogwarts to those who ask for it.
Re[2]: как узнать, что сборка обфусцирована?

От: MaxRos
Дата: 13.04.09 12:43
Оценка:

Видимо, eziriz IntelliLock не устанавливает эти атрибуты . Вопрос открыт.

Re: как узнать, что сборка обфусцирована?

От: Аноним
Дата: 13.04.09 14:28
Оценка:

Здравствуйте, MaxRos, Вы писали:

MR>Надо выяснить программно сам факт обфускации. Неважно чем именно. Например, ildasm говорит «protected module». К чему можно привязаться?

Проверить идентификаторы на совпадение (или похожесть) со словами из словаря.

Re[2]: как узнать, что сборка обфусцирована?

От: MaxRos
Дата: 13.04.09 14:31
Оценка:

А>Проверить идентификаторы на совпадение (или похожесть) со словами из словаря.

Читайте также:
Как называется программа которая фотографирует

Можно и так, спасибо. Я всё надеялся на какое-то более красивое решение =)

Re: как узнать, что сборка обфусцирована?

От: notacat
Дата: 13.04.09 18:35
Оценка: 3 (1)

Здравствуйте, MaxRos, Вы писали:

Как узнать каких витаминов не хватает в домашних условиях!



MR>например, ildasm говорит «protected module».
Это не про обфускацию:

Suppress disassembly to IL using the ildasm.exe tool by applying the SuppressIldasmAttribute from the System.Runtime.CompilerServices namespace:
[assembly: SuppressIldasm()]
in AssemblyInfo.cs (similar for Visual Basic). When you try to disassembly the code now, you end up with the following warning:

>ildasm DemoStuff.exe /out:demostuff.il
Protected module — cannot disassemble
Notice this does not protect an assembly against things such as reflection and is *not* an obfuscator.
(If you’ve been busy with .NET since day one, you might recall that in the early betas (somewhere in 2001) the ilasm.exe tool (not ilDasm.exe!) had a /owner switch that could be used to «copyright» an assembly and protect it against disassembly.)

Т.е. такую штуку можно определить по атрибуту SuppressIldasmAttribute.

Возможно, обфускацию можно определить по каким-нибудь метрикам. Например, у нас процесс настроен так, что имена всех непубличных членов обрезаются до минимальной длины. Если в классе есть три метода с разными параметрами, то в результате они все будут называться a(. ). Чисто умозрительно средняя длина имени метода будет сильно короче, чем до обфускации. Но это еще надо исследование провести, что и как разные обфускаторы делают.

Источник: www.rsdn.org

Обфускация и деобфускация кода: всё про этот метод защиты ПО

Lorem ipsum dolor

Напишем

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

  • выяснить структуру и алгоритмы скриптов;
  • выяснить , как программный код взаимодействует с защитным ПО.

Подобное «исследование» программ именуется « реверсивной инженерией » .

Обфускация(от английского «obfuscation» — « запутывание » ) — это способ защиты программ, который усложняет процедуру реверсивной инженерии над исходным программным кодом.

Обфускация кода

  • шифрование программного кода;
  • установка подлинности скриптов;
  • «водяной знак» в коде;
  • выполнение программы на стороне сервер а и др .
Читайте также:
Лучшая программа по удалению голоса

Обфускация: алгоритмы и оценка процесса

  • общего характера — это алгоритмы, рассчитанные для различных языков программирования, применяющие общие методы и подходы к «запутыванию»;
  • специализированного характера — это алгоритмы, рассчитанные на языки программирования, которые обладают определенными свойствами.
  1. Алгоритм Колбера — это алгоритм общего характера, который наиболее распространен при обфускации кода.
  2. Chenxi Wangs — это специализированный алгоритм для высокоуровневых языков программирования.
  • устойчивость — характеризует уровень сложности для реализации реверсивной инженерии над программным кодом после обфускации;
  • эластичность — характеризует уровень защищенности программного кода после обфускации от использования специальных программ для деобфускации (обратный процесс обфускации);
  • цена «запутывания» – характеризует объем ресурсов компьютера, который будет необходим для запуска обфусцированного программного кода и его отношение к объему ресурсов, необходимых для запуска необфусцированного программного кода;
  • время «распутывания» – это условный показатель, обозначающий минимальное количество затраченного времени, которое необходимо небольшой команде специалистов для изучения «запутанного» кода, прошедшего обфускацию.

Обфускация кода: виды

Напишем

Обфускацию можно распределить на несколько видов, которые зависят от метода модифицирования кода программы. Различают следующие виды:

  1. Лексическая обфускация — это наиболее распространенный вид «запутывания», который основывается на изменении кода таким образом, чтобы он стал нечитабельным, неинформативным и трудноизучаемым. При таком подходе удаляются все комментарии, пробелы и отступы; заменяются идентификаторы: имена переменных, массивов, функций, процедур и т. д.; добавляются «мусорные» операции; изменяется расположение блоков кода и др.
  2. Обфускация данных — это довольно сложная реализация обфускации, которая трансформирует структуру данных. Например , она изменяет существующие типы данных в программе или вообще использует и внедряет собственные типы данных, усложняет структуру данных путем изменения соединений между зависимыми и независимыми данными программы, изменяет последовательность объявления переменных, переупорядочивает методы и массивы и др.
  3. Обфускация управления — данная обфускация запутывает последовательность выполнения программных скриптов.
  4. Превентивная обфускация — это способ предотвратить применение киберпреступниками деобфускаторов и декомпиляторов, нацеленных на исследование кода программы.
Читайте также:
Запуск программы невозможен так как отсутствует mss32 dll

Деобфускация

Напишем

Что такое обфускация? Это процесс «запутывания» кода. Но когда мы размышляем об обфускации, то в любом случае появляется вопрос: а существует ли обратный процесс, чтобы можно было «распутать» «запутанный» код?

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

Под деобфускацией понимают процесс при котором «запутанный» код становится более читабельным и понятным. По сути, это и есть процесс оптимизации кода, который рассчитан на удаление всего лишнего из кода. А как мы помним, при обфускации добавляется много «мусорного» ненужного кода, который затрудняет чтение кода программы.

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

Получается, что деобфускация кода — это и есть оптимизация кода. Но и это еще не все. К процессу деобфускации кода можно отнести еще процедуру декомпиляции программного кода. При декомпиляции программ из двоичного кода на выходе получается более-менее понятное представление исходного кода программы на каком-либо языке программирования высокого уровня. А это значит, что процед уру реверсивной инженерии после декомпиляции осуществить легче.

Также к процессу деобфускации подключаются дополнительные инструменты в виде статического и динамического анализа программ.

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

Заключение

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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru