Коробейников А.Г., Кутузов И.М. —
Обфускация сокрытия вызовов при помощи инструкции invokedynamic
// Кибернетика и программирование. – 2016. – № 5.
– С. 33 - 37.
DOI: 10.7256/2306-4196.2016.5.18686
URL: https://e-notabene.ru/kp/article_18686.html
Читать статью
Аннотация: Объектом исследования в данной статье являются технологии сокрытия вызовов методов. Сокрытие вызовов требуется для сокрытия: зависимости сущностей; логики обработки данных; алгоритмов. Методы, используемые для сокрытия вызовов сильно ограничены технологиями языка и их производительностью. Вызов метода может осуществляться как напрямую, так и: через бутстрап-метод; из нативного кода (JNI); через Reflection; используя JRE 1.7, InvokeDynamic. Представлены примеры с исходным кодом. Сделан вывод, что наиболее перспективной среди рассмотренных методов является технология invokedynamic. В данной работе дан анализ технологий сокрытия вызовов методов, таких как Бутстрап-метод, вызов методов через нативный код, обфускация вызовов с помощью Reflection и InvokeDynamic. В данной статье рассмотрены различные способы сокрытия вызова методов. Рассмотрены характерные особенности обфускации для наиболее популярных из них. Наиболее перспективной среди рассмотренных методов выглядит технология invokedynamic. Она позволяет полностью убрать из исходных кодов сигнатуру метода, оставив лишь служебную информацию для бутстрап-метода. При надлежащей реализации бутстрап-метода возможно создание байт-кода, который будет невозможно декомпилировать в валидный код Java, Groovy или Scala.
Abstract: The object of the study is technology of hiding method calls. Hidden calls are need to hide: entity dependencies; data processing logic; algorithms. The methods used to complete the task are limited by language technologies and its performance. Method can be called directly and indirectly: via the bootstrap method; from native code (JNI); using Reflection; using JRE 1.7, InvokeDynamic. The examples with source code are given. The authors conclude that the most promising methods among considered is invokedynamic technology. The study present analysis of such methods as the bootstrap method, calling method from through native code, obfuscation calls via Reflection and InvokeDynamic. The article discusses various ways to conceal the method invocation. The characteristic features of obfuscation for most popular ones are reviewed. The most promising among the discussed methods is invokedynamic technology. It allows completely removing method signature from the source code, leaving only the service information for the bootstrap method. With proper implementation of the bootstrap method it is possible to create bytecode, which will be impossible to decompile into valid Java code, Groovy's or Scala.
Коробейников А.Г., Кутузов И.М. —
Алгоритм обфускации
// Кибернетика и программирование. – 2013. – № 3.
– С. 1 - 8.
DOI: 10.7256/2306-4196.2013.3.9356
URL: https://e-notabene.ru/kp/article_9356.html
Читать статью
Аннотация: В данной статье рассмотрен алгоритм Chenxi Wang, приведены основные недостатки, предложены пути модификации для их устранения. В данной работе рассмотрен алгоритм Chenxi Wang's, как один из наиболее известных. Входными данными для алгоритма является обычная процедура, написанная на языке высокого уровня. Описываются три этапа обфускации любой такой процедуры. Рассматриваются основные недостатки алгоритма и указываются возможности разрешения ошибочных ситуаций. В классическом варианте алгоритм "Chenxi Wang's algorithm" обладает плохой устойчивостью. Предлагаются варианты для повышения устойчивости алгоритма. Рассматривается пример использования модифицированного Chenxi Wang's. Проводится анализ полученного результата. Сравнивается исходный текст и полученный, заключается, что установить их функциональную тождественность практически невозможно. Логику работы программы по обфусцированному исходному коду понять очень трудно. Иногда это можно сделать используя примеры запуска полученного исходного кода. Отсюда следует, что при устранении озвученных недостатков, алгоритм является достаточно эффективным.
Abstract: The paper deals with the algorithm of Chenxi Wang’s, shows are the main disadvantages of this algorithm. The authors suggest the ways of modification to improve it. The algorithm of Chenxi Wang's is one of the most famous. The input data for the algorithm is the usual procedure, written in high level language. The authors describe the three stages of obfuscation of any such procedure. In the classic version of Chenxi Wang's the algorithm has poor stability. The authors suggest ways to improve stability of the algorithm, present modified version of the algorithm and reviews results of its implementation. The authors compare the source code and the resulting code and conclude that it is almost impossible to establish their functional identity and the logic of the program code is very difficult to understand using obfuscated source. Sometimes this can be done using the examples run of the resulting source code. This implies that after eliminating the shortcomings the algorithm is quite effective.
Коробейников А.Г., Кутузов И.М., Колесников П.Ю. —
Анализ методов обфускации
// Кибернетика и программирование. – 2012. – № 1.
– С. 31 - 37.
DOI: 10.7256/2306-4196.2012.1.13858
URL: https://e-notabene.ru/kp/article_13858.html
Читать статью
Аннотация: Современные компьютерные технологии делают актуальными различные задачи в сфере информационной безопасности. Например, для защиты авторских прав на изображения применяют методы стеганографии. Для решения задачи доказательства авторства (или наоборот скрытия такового) программного кода используют методы обфуска́ции. Обфуска́ция (от лат. Obfuscare – затенять, затемнять; и англ. Obfuscate – делать неочевидным, запутанным, сбивать с толку) или запутывание кода – это процесс приведения исходного текста или исполняемого кода программы к виду, сохраняющему ее функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции. В настоящее время имеются специальные программы, производящие обфускацию, называемые обфускаторами, которые решают поставленную задачу по-разному. В данной статье рассматриваются основные методы обфускации от самых простых полиморфных генераторов до изощренных обфускаторов, выполняющих математические преобразования программного кода, а так же взаимосвязь обфускации и повышения эффективности исполнения программного кода и уменьшению размера программы. Описано дальнейшее развитие методов обфускации.
Abstract: Modern computer technology makes it a variety of tasks relevant to the field of information security. For example, for the protection of copyright in the images methods of steganography are used. To solve the problem of proving authorship (or vice versa) code obfuscation techniques are used. Obfuscation (from Lat. Obfuscare - obscure, obfuscate, and English. Obfuscate - make non-obvious, confusing, confusing) or obfuscated code - is the process of bringing the source code or executable program code to the form, that keeps its functionality, but complicates the analysis, understanding algorithms and modification during decompilation. Currently, there are special programs called obfuscators that performes obfuscation to solve the task in different ways. The article discusses the techniques of obfuscation from the most basic to sophisticated polymorphic generators obfuscators performing the mathematical transformation of the code, as well as the relationship of obfuscation and efficiency of program code execution and reduce the size of the program. The authors describe further development of obfuscation techniques.