Jump to content

Обфускация (программное обеспечение)

(Перенаправлено из запутанного кода )

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

Архитектура и характеристики некоторых языков могут облегчить запутывание их, чем других. [2] [3] С , [4] С++ , [5] [6] и Perl язык программирования [7] Вот несколько примеров языков, которые легко запутать. Haskell также довольно запутан. [8] несмотря на то, что они совершенно разные по структуре.

Свойства, которые делают язык запутанным, не очевидны сразу.

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

По словам Ника Монфора , методы могут включать в себя:

  1. запутывание именования, которое включает бессмысленное или вводящее в заблуждение именование переменных;
  2. путаница данных/кода/комментариев, которая включает в себя придание фактическому коду вида комментариев или путаницу синтаксиса с данными;
  3. двойное кодирование, которое может представлять собой отображение кода в поэтической форме или в интересных формах. [9]

Автоматизированные инструменты

[ редактировать ]

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

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

Рекреационный

[ редактировать ]

Написание и чтение запутанного исходного кода может оказаться непростой задачей . Ряд конкурсов по программированию награждает наиболее творчески запутанный код, например, International Obfuscated C Code Contest и Obfuscated Perl Contest .

Короткие запутанные программы Perl могут использоваться в сигнатурах Perl-программистов. Это JAPH (« Просто еще один хакер Perl »). [16]

Криптографический

[ редактировать ]

Криптографы исследовали идею запутывания кода, поэтому его реверс-инжиниринг становится криптографически сложным. Это формализовано во многих предложениях по обфускации неотличимости — криптографическому примитиву, который, если его можно будет построить безопасно, позволит создавать многие другие виды криптографии, включая совершенно новые типы, которые никто не знает, как создавать. что более сильное понятие — запутывание «черного ящика» — вообще невозможно.) ( Известно, [17] [18]

Недостатки обфускации

[ редактировать ]
  • Хотя обфускация может затруднить чтение, запись и реверс-инжиниринг программы, это не обязательно сделает ее невозможной. [19]
  • Это увеличивает время и сложность процесса сборки для разработчиков.
  • Это может чрезвычайно затруднить отладку после того, как программное обеспечение было запутано.
  • Как только код перестанет поддерживаться, любители могут захотеть поддерживать программу, добавлять моды или лучше понимать ее. Обфускация мешает конечным пользователям делать полезные вещи с кодом.
  • Определенные виды обфускации (т. е. код, который не является просто локальным двоичным файлом и при необходимости загружает мини-двоичные файлы с веб-сервера) могут снизить производительность и/или потребовать подключения к Интернету.

Уведомление пользователей об обфусцированном коде

[ редактировать ]

Некоторые антивирусные программы, такие как AVG AntiVirus , [20] также будет предупреждать своих пользователей, когда они попадают на веб-сайт с кодом, который замаскирован вручную, поскольку одной из целей запутывания может быть сокрытие вредоносного кода. Однако некоторые разработчики могут использовать обфускацию кода с целью уменьшения размера файла или повышения безопасности. Среднестатистический пользователь может не ожидать, что его антивирусное программное обеспечение будет выдавать предупреждения о безобидном фрагменте кода, особенно от доверенных корпораций, поэтому такая функция может фактически удержать пользователей от использования законного программного обеспечения.

Mozilla и Google запрещают расширения браузера, содержащие запутанный код, в своем магазине дополнений. [21] [22]

Лицензии на обфускацию и авторское лево

[ редактировать ]

Ведутся споры о том, незаконно ли обходить с авторским левом лицензии на программное обеспечение , публикуя исходный код в запутанной форме, например, в тех случаях, когда автор менее желает сделать исходный код доступным. Эта проблема решена в Стандартной общественной лицензии GNU , требующей предоставления «предпочтительной формы для внесения изменений». [23] На веб-сайте GNU говорится: «Запутанный «исходный код» не является настоящим исходным кодом и не считается исходным кодом». [24]

Декомпиляторы

[ редактировать ]

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

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

[ редактировать ]

Обфускация модели — это метод, позволяющий скрыть внутреннюю структуру модели машинного обучения . [25] Обфускация превращает модель в черный ящик. Это противоречит объяснимому ИИ . Модели обфускации также можно применять к обучающим данным перед их подачей в модель для добавления случайного шума. Это скрывает конфиденциальную информацию о свойствах отдельных образцов и групп образцов. [26]

См. также

[ редактировать ]
  1. ^ «Что такое обфускация (обфу)? — Определение с сайта WhatIs.com» . ПоискКачествоПрограммного обеспечения . Архивировано из оригинала 2 февраля 2019 года . Проверено 1 февраля 2019 г.
  2. ^ Бинсток, Эндрю (6 марта 2003 г.). «Обфускация: скрытие вашего кода от посторонних глаз» . Архивировано из оригинала 20 апреля 2008 года . Проверено 25 ноября 2013 г.
  3. ^ Этвуд, Джефф (15 мая 2005 г.). «Джефф Этвуд, 15 мая 2005 г.» . Codinghorror.com. Архивировано из оригинала 9 января 2010 года . Проверено 25 ноября 2013 г.
  4. ^ «Обфускация» . Кентер.demon.nl. Архивировано из оригинала 4 марта 2016 года . Проверено 25 ноября 2013 г.
  5. ^ «Учебные пособия по C++. Обфусцированный код. Простое введение» . DreamInCode.net. Архивировано из оригинала 28 июня 2008 года . Проверено 25 ноября 2013 г.
  6. ^ «Учебники по C — запутанный код на C» . 7 июля 2011. Архивировано из оригинала 27 декабря 2013 года . Проверено 25 ноября 2013 г.
  7. ^ По состоянию на 25 ноября 2013 г., 18:22 по Гринвичу. «Пер(а)рлы в линейном шуме» . Perlmonks.org. Архивировано из оригинала 16 января 2009 года . Проверено 25 ноября 2013 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  8. ^ «Обфускация – Haskell Wiki» . 16 февраля 2006 года. Архивировано из оригинала 30 августа 2017 года . Проверено 3 марта 2020 г.
  9. ^ Монфор, Ник. «Запутанный код» (PDF) . Архивировано из оригинала (PDF) 24 апреля 2019 года . Проверено 24 ноября 2017 г.
  10. ^ Бен Куртович. «Запутывающее «Привет, мир!» » . benkurtovic.com . Архивировано из оригинала 14 сентября 2017 года . Проверено 18 октября 2017 г.
  11. ^ «Обфусцированный Питон» . wiki.c2.com . Архивировано из оригинала 14 февраля 2017 года . Проверено 18 октября 2017 г.
  12. ^ «Первый ежегодный запутанный контент Python» . code.activestate.com . Архивировано из оригинала 25 мая 2023 года . Проверено 18 октября 2017 г.
  13. ^ domas (3 ноября 2022 г.), xoreaxeaxeax/movfuscator , заархивировано из оригинала 12 ноября 2022 г. , получено 5 ноября 2022 г.
  14. ^ Break Me00 The MoVfuscator Превращение фильма в душераздирающий кошмар RE Кристофер Домас , заархивировано из оригинала 21 октября 2022 г. , получено 5 ноября 2022 г.
  15. ^ Уильямс, Эл (21 марта 2021 г.). «Одна инструкция, чтобы управлять ими всеми: компилятор C генерирует только MOV» . Хакадей . Проверено 23 октября 2023 г.
  16. ^ «JAPH — еще один Perl-хакер» . pm.org . Перл Монгеры. Архивировано из оригинала 16 мая 2013 года . Проверено 27 февраля 2015 г.
  17. ^ «Прорыв в криптографии может сделать программное обеспечение неуязвимым» . Проводной . ISSN   1059-1028 . Архивировано из оригинала 14 апреля 2022 года . Проверено 14 марта 2021 г.
  18. ^ Джайн, Ааюш; Линь, Хуэйцзя; Сахай, Амит (2020). «Обфускация неотличимости от вполне обоснованных предположений» . Архив электронной печати по криптологии . arXiv : 2008.09317 . Архивировано из оригинала 3 марта 2022 года . Проверено 14 марта 2021 г.
  19. ^ « Можем ли мы запутать программы?», Боаз Барак . Math.ias.edu. Архивировано из оригинала 23 марта 2016 года . Проверено 25 ноября 2013 г.
  20. ^ «Блокировка веб-сайта, единственный способ исправить это — отключение HTTPS… | AVG» . support.avg.com . 21 июля 2020 года. Архивировано из оригинала 4 февраля 2022 года . Проверено 4 февраля 2022 г.
  21. ^ в 05:01, Томас Клэберн, Сан-Франциско, 2 октября 2018 г. «Google принимает меры против замаскированного кода в Интернет-магазине Chrome» . www.theregister.co.uk . Архивировано из оригинала 12 ноября 2019 года . Проверено 12 ноября 2019 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  22. ^ Чимпану, Каталин. «Mozilla объявляет о запрете расширений Firefox, содержащих запутанный код» . ЗДНет . Архивировано из оригинала 5 марта 2020 года . Проверено 12 ноября 2019 г.
  23. ^ «Обоснование формулировки «предпочтительной формы произведения для внесения в него изменений» в GPL» . Lwn.net. Архивировано из оригинала 2 декабря 2013 года . Проверено 25 ноября 2013 г.
  24. ^ «Что такое свободное программное обеспечение?» . gnu.org. Архивировано из оригинала 14 октября 2013 года . Проверено 18 декабря 2014 г.
  25. ^ Цзин; Гранди, Джон Чен, Сяо; Ли, Ли (2023) Чжоу, Минъи; Гао, Ву , . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  26. ^ Чжан, Тяньвэй; Он, Цзэчэн; Ли, Руби Б. (12 июля 2018 г.). «Машинное обучение с сохранением конфиденциальности посредством обфускации данных». arXiv : 1807.01860 [ cs.CR ].

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f49c3b2b3a08679c81c1551bbc18d78b__1719707460
URL1:https://arc.ask3.ru/arc/aa/f4/8b/f49c3b2b3a08679c81c1551bbc18d78b.html
Заголовок, (Title) документа по адресу, URL1:
Obfuscation (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)