Обфускация — запутывание кода программы, то есть приведение исходного текста к виду, сохраняющему функциональность программы, но затрудняющему анализ, понимание алгоритмов работы и модификацию. Есть ли процесс обратный обфускации, который позволил бы злоумышленнику вернуть наиболее похожий первоначальный код программы, то есть код до обфускации? На этот вопрос трудно дать однозначный ответ, но такой процесс существует и носит он название деобфускация.
С одной стороны, к процессу деобфускации можно отнести процесс оптимизации программного кода, так как они оба, в той или иной степени, противоположны процессу обфускации. В процессе обфускации в программный код часто производится добавление лишних операций, они обычно никоим образом не влияют на результаты работы самой программы и предназначены для сбития с толку и усложнения процесса изучения кода программы посторонними лицами.
В свою очередь, процесс оптимизации программного кода направлен на ликвидацию лишних операций, поэтому в частных случаях он может выступать в качестве квинтэссенции процесса деобфускации.
Большинство компиляторов в процессе компиляции исходного кода, автоматически осуществляют процесс оптимизации, поэтому если обфускация осуществляется над исходным кодом программы (обфускация высокого уровня), возникает определенная вероятность, того, что ее эффективность после, компиляции снизиться. Если же такой исходный код будет обрабатываться интерпретатором (то есть не будет подвержен компиляции), эффективность осуществленного процесса обфускации не изменится.
К процессу деобфускации также можно отнести и процесс декомпиляции, который позволяет, имея двоичный код программы, получить наиболее схожее исходное представление этого кода на языке высокого уровня, который более понятен человеку, это позволит упростить процесс реверсивной инженерии.
Образец классификации методов процесса деобфускации:
Cтатический анализ — это семейство технологий анализирования программ, где анализируемую программу фактически не требуется запускать, при этом требуемую информацию о ней получают при помощи специальных программ. Например, статический анализ программ, представленных в двоичном виде, можно осуществить, используя декомпилятор, а представленных в исходном виде, используя какой-либо текстовый редактор. Технологии статического анализа отличаются от большинства существующих, ее основное качество заключается в том, что она является более комплексной и базируется на семантике (определяет смысловое значение предложений алгоритмического языка) самого кода программы. Статический анализ позволяет исследовать программу и выявить некоторые причины ее возможного поведения во время ее работы, то есть результаты статического анализа нельзя считать абсолютно точными.
В свою очередь динамический анализ заключается в анализе/тестировании программы во время ее выполнения. Он считается точным, так как он исследует фактическое поведение программы во время ее работы.
Динамический анализ обычно осуществляется быстрее, чем статический, так как время его выполнения чаще всего зависит от скорости выполнения анализируемой программы. Статический же анализ обычно требует много вычислений и является длительным, особенно когда анализируются большие программы. Недостаток динамического анализа заключается в том, что полученные результаты могут не соответствовать результатам, получаемым при последующих запусках одной и той же программы.
Что такое мужская дружба | Вопрос и Ответ
Дружба — бескорыстные личные взаимоотношения между людьми, основанные на доверии, искренности, взаимных симпатиях, общих интересах и увлечениях. Обязательными признаками дружбы являются
Что такое криль | Вопрос и Ответ
Криль (нидерл. kriel, буквально — малыш, крошка, мелочь) — это собирательное название мелких морских нектонных ракообразных (рачков) промысловых размеров (10—65 мм), образующих
Что такое рогатка | Вопрос и Ответ
Рогатка — метательное холодное оружие, в котором ускоряемое тело (снаряд) приобретает кинетическую энергию потенциальной энергии, запасённой в растянутом резиновом жгуте. Применяется для
Что такое мушмула | Вопрос и Ответ
Мушмула — Eriobotrya (Семейство — Розоцветные — Rosaceae) Название рода происходит от греческих слов erion — шерсть и bot–rys —
Что такое ехидны | Вопрос и Ответ
Ехидны — представители отряда однопроходных. В этот же отряд наряду с ехидной входит утконос. Семейство содержит три вида ехидн, разделённые в два рода. СистематикаСемейство ехидн
Что такое сектор круга | Вопрос и Ответ
Определения. Все приводимые определения эквивалентны: Сектор круга — это пересечение круга и некоторого его центрального угла. Сектор круга — это часть круга,
Что такое дерби | Вопрос и Ответ
Классификация по типу шнуровки Вся обувь делится на два типа: со шнуровкой и без нее. Первые являются более деловым вариантом и, в свою очередь, тоже делятся на две
Что такое инсулин | Вопрос и Ответ
Инсулин (от лат. insula — остров) — гормон пептидной природы, образуется в бета-клетках островков Лангерганса поджелудочной железы. Оказывает многогранное влияние на обмен практически
Что такое USB Hub | Вопрос и Ответ
USB hub - USB концентратор. Это устройство, позволяющее соединять несколько USB устройств в одну связку и подсоединять их к одному USB порту. Такие концентраторы часто бывают встроенными в
Что такое CAM-модуль | Вопрос и Ответ
CAM (от англ. Conditional Access Module, модуль условного доступа) — это электронное устройство, используемое как адаптер конкретной системы кодирования к общим интерфейсам условного доступа