Skip to content

fivol/cpp-obfuscator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Обфускатор c++

Обфуска́ция или запутывание кода — приведение исходного текста или исполняемого кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции

Рефакторинг кода с целью обойти простой антиплагиат

Запуск и использование

Аргументы:

  1. Имя входного файла (относительное или абсолютное)
  2. -o имя выходного файла. По умолчанию a.cpp (по старой доброй традиции)

Примеры:

python3 app/main.py examples/1.cpp

python3 app/main.py examples/2.cpp -o examples/2_out.cpp

Код проходит следующие этапы:

  1. Считывание из файла
  2. Парсинг или распознавание. Классы, описывающие синтаксис языковых объектов находятся в файле lang_objects.py и начинаются с префикса С, например CFunction - распознает любую функцию, в тч метод класса
  3. Превращение сущностей в виде python классов обратно в код, но в измененном виде. За это отвечает метод .refactor()
  4. Запись выходного файла

Как это можно переиспользовать?

  1. Кастомизировать обфускаию c++ под свои нужды. Работать с программными сущностями намного проще, чем с сырым кодом
  2. Создать свой парсер любого языка с данным обработчиком. Достаточно заменить обработчики в файле lang_objeccts.py
  3. Парсинг любых сложных структур описываемых контекстно-свободной грамматикой. Для этого в файле parser_utils.py лежат независящие от синтаксиса функции, создающие базу для модификации
  4. Генерация кода, на основе разработанной грамматики

Парсер поддерживает основные языковые сущности

  • Классы
  • Функции
  • Импорты
  • Выражения
  • Условные конструкции
  • Объявления переменных
  • Структуры

Цель проекта:

  • Практика написания простых модулей на python
  • Простое решение для помощи людям в лабах по c++ (быстрое первичное изменение рабочего кода, для отправки другим человеком в контест). Обратить внимание, что после этого все равно требуется "причесать" выходной код

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages