Abstract

Nowadays protecting intellectual property rights for created software is very important because of many competing companies and ubiquitous piracy. The powerful technique for this protection is to obfuscate program code. This paper describes an approach for developing an obfuscation tool based on a compiler infrastructure. Using the compiler infrastructure is beneficial as during compilation we have the complete information about the compiled program for free and we do not need to solve problems like correct disassembling, new target support etc. We have formulated the efficiency criteria for an obfuscating technique: an obfuscation transformation should obfuscate both control flow and data flow simultaneously. The main feature of the described approach is using the set of transformations, which mask the various aspects of the obfuscated application. Together, this set provides the strong protection against the static analysis. Opaque predicates insertions, flattening and increasing indirection transformation are the most efficient transformations. Also we have formulated the compiler infrastructure requirements that need to hold for successfully implementing an obfuscating compiler using this infrastructure. The essential requirements are complied with LLVM (low level virtual machine) compiler infrastructure.

Highlights

  • This paper describes an approach for developing an obfuscation tool based on a compiler infrastructure

  • Using the compiler infrastructure is beneficial as during compilation we have the complete information about the compiled program for free and we do not need to solve problems like correct disassembling, new target support etc

  • The main feature of the described approach is using the set of transformations, which mask the various aspects of the obfuscated application

Read more

Summary

Введение

В настоящее время актуальна задача защиты программ, как от статического, так и от динамического анализа кода. Доступность качественных средств для анализа кода и большой выбор подключаемых модулей, в автоматическом режиме обходящих многие приемы противодействия анализу, понижают планку требований к квалификации аналитика. Что ведет к повышению требований к защите программ. Необходимо использовать либо методы противодействия анализу неизвестные широкому кругу лиц, либо использовать преобразования достаточно трудоемкие для анализа. Оптимальным выбором, позволяющим реализовать максимально стойкие варианты запутывания программ, является создание обфусцирующего компилятора[1] на базе одной из существующих компиляторных инфраструктур. С одной стороны это позволит производить запутывание программы, имея полную информацию о ней на всех этапах компиляции, а с другой позволит сосредоточиться на разработке защиты, а не на создании требуемой инфраструктуры. Для реализации прототипа была выбрана инфраструктура LLVM [2], позволяющая получать для программы промежуточные и бинарные коды, а также из промежуточного представления генерировать код на языке С

Оценка эффектности методов обфускации
Сводимость графа потока управления
Определение критериев эффективности методов обфускации
Предлагаемые методы запутывания
Требования к инфраструктуре
Заключение
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call