Вопросы и Ответы

Что такое процесс декомпиляции

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

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

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

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

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

Образец классификации методов процесса деобфускации:

  • нахождение и оценка непрозрачных конструкций (предикатов), статический анализ которых очень сложен;
  • сопоставление с образцом. Осуществляется различными способами, наиболее распространенны два из них. Первый, когда берется несколько одних и тех же программ, прошедших процесс обфускации (так как процесс обфускации в большинстве случаев уникален, то их код также будет разный, хотя они и будут выполнять идентичные действия) и производится сравнение фрагментов их кода, для выявления вставленного в процессе осуществления обфускации лишнего кода, который впоследствии просто убирается. Второй способ сопоставления с образцом осуществляется путем поиска в коде программы наиболее распространенных конструкций, применяемых в процессе обфускации. Такие конструкции могут, например, храниться и обновляться в соответствующей базе данных или быть получены путем изучения работы самого обфускатора;
  • выделение в программе фрагментов кода, которые никоим образом не связаны с основными задачами, которые должна выполнять программа, то есть обнаружение ненужных (лишних) участков кода;
  • статистический анализ заключается в динамическом анализе кода программы;
  • анализ потока данных основывается на изучении того, как в процессе работы программы изменяются в ней данные (переменные, массивы).

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

В свою очередь динамический анализ заключается в анализе/тестировании программы во время ее выполнения. Он считается точным, так как он исследует фактическое поведение программы во время ее работы.

Динамический анализ обычно осуществляется быстрее, чем статический, так как время его выполнения чаще всего зависит от скорости выполнения анализируемой программы. Статический же анализ обычно требует много вычислений и является длительным, особенно когда анализируются большие программы. Недостаток динамического анализа заключается в том, что полученные результаты могут не соответствовать результатам, получаемым при последующих запусках одной и той же программы.

Ещё Что такое

Что такое сепаратизм | Вопрос и Ответ
Сепаратизм изначально происходит от латинского слова separare, которое переводится как разделять или же отделять. Слово сепаратизм есть в составе многих западноевропейских языков и имеет в них

Что такое гражданство | Вопрос и Ответ
Гражданство — устойчивая правовая связь человека и государства, выражающаяся в наличии взаимных прав, обязанностей и ответственности.Гражданство является одним из институтов конституционного

Что такое плоские бородавки | Вопрос и Ответ
Бородавки — доброкачественные новообразования кожи, вызываемые различными типами вируса папилломы человека. Преобладающий возраст – детский, юношеский. Бородавки способствую снижению

Что такое гидроколонотерапия | Вопрос и Ответ
Акне (угревая сыпь) – одно из самых распространенных кожных заболеваний, при котором происходит воспаление сальных желез лица, груди и спины. Постакне – это рубцы и красные

Что такое броматология | Вопрос и Ответ
Нутрициология — это одно из направлений науки о питании человека и животных (от позднелат. nutrio — питание, пища и logos — слово). Нутрициология является

Что такое yo-yo | Вопрос и Ответ
Йо-йо - одна из древнейших игрушек на Земле. Существует много версий касательно родины йо-йо, прототипы игрушки существовали в Древнем Китае около двух тысяч лет назад, однако доказательств немного.

Что такое теория игр | Вопрос и Ответ
Теория игр (русский эквивалент английского theory of games) - математическая теория, предсказания результатов игр, в которых участники не имеют полной информации о намерениях друг друга.

Что такое валентность | Вопрос и Ответ
Валентность (от лат. valentia — сила) в общем случае — способность объекта взаимодействовать с другими объектами. Валентность в химии — способность атомов

Что такое вирус полиомиелита | Вопрос и Ответ
Полиомиелит (poliomyelitis, Infantile Paralysis, Polio; polio (греч.) — серый, myelos — мозг) — острая вирусная инфекция, поражающая нервную систему (серое вещество спинного

Что такое антропогенный рельеф | Вопрос и Ответ
Антропогенный рельеф, рельеф, измененный или созданный деятельностью человека. Антропогенные формы рельефа впервые возникли в то время, когда охотничьи племена начали рыть ямы для ловли зверей,

Что такое антропогенный рельеф