Найти в Дзене

"Дуров! Отдай ключи!" или "Что такое обфускатор"

Обфускация программного кода — это процесс его изменения для превращения его в нечитаемый человеком вид. Вернее вид то может быть "читаемый", но вот насчет "понимаемый" - это под вопросом. Звучит заумно, но метод действенный. Делается это для затруднения обратного инженеринга кода, когда читая код, человек понимает логику его работы. Довольно большая часть кода распространяется в виде обычных текстовых файлов, которые являются исполняемыми программным кодом для интерпретаторов языков. К таким языкам относятся: Java, Python, PHP и другие, перечислять которые я здесь не буду. После написания и отладки программы, если автор желает скрыть от любого, кто будет читать код его программы, автор может прогнать файл программы через т.н. "обфускатор", который превратит код в трудно понимаемый с отсутствием видной логики набор символов, сохраняя при этом его полную работоспособность. В основном такой метод применяют для затруднения чтения кода, особенно, когда есть что скрывать. Но бывают и исключ

Обфускация программного кода — это процесс его изменения для превращения его в нечитаемый человеком вид. Вернее вид то может быть "читаемый", но вот насчет "понимаемый" - это под вопросом. Звучит заумно, но метод действенный. Делается это для затруднения обратного инженеринга кода, когда читая код, человек понимает логику его работы.

Довольно большая часть кода распространяется в виде обычных текстовых файлов, которые являются исполняемыми программным кодом для интерпретаторов языков. К таким языкам относятся: Java, Python, PHP и другие, перечислять которые я здесь не буду.

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

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

Пример:

  • function GetFileNamesFromDerictory_UTF8(sDir: string): sFileList;
  • function f1(s1: string): s2;

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

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

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

В своем последнем примере по программированию я в архив с кодом программы положил один и тот же файл в двух версиях, одну версию файла с нормальным кодом, и вторую версию с файлом, прошедшим процедуру обфускации. Сама статья тут: https://dzen.ru/a/aNU75Qs5NjtJtGoH

Ссылка на архив с файлами:

https://github.com/Nestorchik/OneBatFileForAll/releases/download/Comfyui_bat/install_ComfyUI_toml_no_Git.zip

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

  • git_comfyui.py - нормальная версия
  • git_comfyui_obfuscator.py - прошедший обфускацию

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

Так выглядит нормальный файл:

-2

А так выглядит после обфускатора:

-3

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

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

Удачи!

NStor

Обложка статьи
Обложка статьи