Обфускатор своими руками

Добавил пользователь Алексей Ф.
Обновлено: 19.09.2024

Статья: как пользоваться Proguard?

После того как вы скачаете и распакуете архив с программой, вам потребуется войти в папку lib и запустит программу proguardgui.jar В левом углу вы увидите колонку с кнопками как на рис 1.1

Первая кнопка которая нас интересует Input/Output(вход/выход).

Input/Output после нажатия на эту кнопку, у вас откроется окно, где вам предложат выбрать место хранения вашего файла, кнопка addinput, и место куда будет сохранен ваш новый фаил, кнопка output. В нижней части окна автоматически в моем случаи добавился путь к jre, а точнее к файлу rt.jar Мой путь до файла: C:\Programm Files\Java\jre 1.8.0_73\lib\rt.jar

Вторая кнопка Shrinking(сокращать).

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

Третья кнопка Obfuscation(обфускация). Здесь мы разберем ключевые опции, которые нам будут важны, так как оставшиеся мало эффективны.

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

  • Оbfuscation должна стоять галка, этот параметр отвечает за запутывания классов и членов класса получают новые короткие случайные имена.
  • Overloadaggressively (агрессивная перегрузка) должна стоять галка, позволяет еще больше запутать классы, давая одни и те же имена переменным, полям, методам. Однако проверяйте программу на наличие ошибок, после выставления этой опции.
  • Useuniqueclassmembernames Так же желательно выставлять эту опцию позволяет создавать уникальные имена классов.
  • Dontusemixedcaseclassnames Желательно выставить этот параметр, так как он отвечает за регистр имен классов. Если он выставлен все классы будут с прописной буквы. Что затруднит читаемость вашего кода.
  • Flatten package hierarchy Если установить эту опцию то произойдет переупаковка всех пакетов, которые переименованы, перемещая их в единый родительский пакет. Если аргумент в строку не ввести , пакеты перемещаются в корневой пакет. Этот вариант является одним из примеров дополнительных запутывания имен пакетов. Он может сделать обработанный код меньше и менее понятным.
  • Repackage classes Установив эту опцию происходит переупаковка всех файлов классов, которые переименованы, перемещая их в единый пакет. Если аргумент в строку не ввести, пакет полностью удаляется. Эта опция отменяет опцию –flatten package hierarchy.
  • Adapt class strings данная опция позволяет String класса, которые соответствуют именам классов будут закодированы. Если оставить без изменения фильтр, все String классы будут адаптированы. Позволяет дополнительно кодировать всю работу с String классами.
  • Adaptresourcefilenames опция задает файлы ресурсов, которые будут переименованы, на основе сбивающих с толку имена соответствующих файлов классов (если таковые имеются). Без фильтра, все файлы ресурсов, которые соответствуют файлам класса будут переименованы. С фильтром, только соответствующие файлы переименовываются.
  • Adaptresourcefilecontents Опция позволяет обновить файлы по фильтру, обязательно должна стоять галка иначе произойдет сбой программы.
  • Nativemethodname параметр стоит ПО умолчаниюю.

Optimization (оптимизация) После нажатия на эту кнопку откроется окно с опциями, разберем с вами основные.

  • Optimization включена по умолчанию, производит оптимизацию вашей программы.
  • Мerge interfaces aggressively опция позволяет объединить интерфейсы, тем самым уменьшает размер программы.
  • Optimization passes опция позволяет сделать несколько прогонов для оптимизации кода, я обычно ставлю 2.

Остальные опции оставьте по умолчанию.

В Information (информация) В этом пункте выставляются различного рода информация, тут я ничего не меняю, оставляю все по умолчанию.

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

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

Здравствуйте, сегодня мы научимся обфускации мода!
С помощью Allatori и Stinger.

Что такое обфускация кода?

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

Дополнительно можно почитать в "Дополнительная информация" Wiki.

Для защиты своего кода.

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

ПРИМЕЧАНИЕ: ДАННЫЕ ВЕРСИИ ОБФУСКАТОРОВ КРЯКНУТЫЕ!
И НА СЕРВЕРНУЮ ЧАСТЬ НУЖНО СТАВИТЬ МОД БЕЗ ОБФУСКАЦИИ!

1. Качаем архив и распаковываем в удобное для вас место.
2. Открываем папку "tutorial" . Тут будет много папок но нам нужны лишь "Step01-Step02-Step03-Step04"
3. Заходим в "step01- files" и открываем файл "config.xml"
Здесь нужно изменить лишь, входящие название и выходящие.

1537365376343.jpg


НЕ ЗАБУДЬТЕ СОХРАНИТЬ!
4. Запустить "RunAllatori.bat".
5. У вас появится еще один jar файл, но уже с названием которое вы указали выходящим.
6 Проделать все эти шаги, только уже скопировать обсф мод из "step01" в другие папки step02 и т.д, до 04, не забывая копировать обсф мод из следующий папки в следующую.
На этом все!

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

1. скачиваем архив новый и распаковываем .
2. заходим в папку "Stringer\Stringer 3".
3. Запускаем jar "stringer-gui.jar"
4.

1537373648433.jpg


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


Думая туториал будет немного кому-то полезен.
Так же хотелось указать благодарность "Матвею Бутакову" за помощь в проведение статьи.
И не забудьте поставить лайк

Автор Defamatory Скачивания 108 Просмотры 3,293 Первый выпуск 19 Сен 2018 Обновление 19 Фев 2019 Оценка 4.44 звёзд 9 оценок

Для тех, кто "не в курсе", для чего используется обфускация:

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




ПРИМЕР
Исходный код:



Результат:
Обфускация — имя переменной случайное число + шифрование строк



или
Обфускация — имя переменной УИД + шифрование строк


Особенности/ограничения:

По умолчанию, новый модуль генерируется универсально. Вычисление пароля происходит при КАЖДОМ вызове расшифровки строки.
Поскольку при обфускации нет возможности автоматически определить, что обрабатываем — модуль формы/модуль приложения, то пока этот нюанс обрабатываем самостоятельно. Правка минимальна.

2. При установке режима шифрования строк разбиваются/шифруются ВСЕ строковые переменные модуля.
3. Имена функций НЕ обрабатываются.(если не указано явное переименование функций)
4. Перенос директив препроцессора, обработка областей модуля НЕ ТЕСТИРОВАЛАСЬ. Вероятно есть ошибки переноса.

5. Переменные имеющие имена совпадающие с функциями глобального контекста корректно не обрабатываются. (например КодСимвола, Символ . и т.д.)

6. Подготовка кода.

Может для кого-то не очевидные моменты, связанные с шифровкой строк.

Код вида : ЭтаФорма.Элементы.ИмяЭлемента.Свойство=НекоеЗначение обработка оставит "как есть"

но, если обращение к реквизитам\свойствам использовать строки: переменнаяЭтаФорма["Элементы"]["ИмяЭлемента"]["Свойство"]=переменная

будет преобразован в: NNN***[FFF***()][FFF***()][FFF***()]=NNN****

будет преобразован в: NNN***[FFF***()]=FFF***()+FFF***()+FFF***();

FFF***() - функция содержащая шифрованную часть строки, согласно заданным параметрам

NNN*** Обфусцированная переменная

"Автоматом" данное преобразование НЕ делается. Все на откуп пользователя, исходя из соображений "быстродействия" и степени "защиты" кода

7. Публикую обработку в состоянии "как есть". В моем случае, свою задачу она решила успешно. Но ошибки, конечно есть :)

"+" нет необходимости использовать внешние компоненты

Тестировалось: 1С:Предприятие 8.3 (8.3.10.2299).

Изменения версии 0.42 от 2017.11.04

1. Оптимизировано быстродействие .

2. При обработке функций/процедур с содержимым более 500 строк возникали ошибки

2. Корректное исключение строк с комментарием из текстов запросов.

3. В некоторых случаях "терялись" логические операции в конце строки- (например логическое И)

4. При пустом значении пароля генерировался "не корректный" код. Добавлена авто-генерация пароля.

5. В некоторых случаях, при генерации кода операторы "<>", ">=", " 6. Исправлены правила переноса инструкций препроцессора

Изменения версии 0.47 от 2017.12.10

- в некоторых случаях некоррекно обрабатывались определения "предопределенных" строковых параметров функций/процедур. Пример: Функция Ф(Парам1="111",Парам2="222")

Изменения версии 0.49 от 2017.12.19

- Некорректно обрабатывались предопределенные параметры имеющие значения '0000000', НЕОПРЕДЕЛЕНО. Пример: Функция Ф(Дата1='00010101',Парам2=неопределено)

- Добавлена возможность исключения команд препроцессора - при генерации кода, иначе при генерации кода модулей объектов возникали синтаксические ошибки, поскольку функции содержащие "шифрованные строки" объявлялись с диррективой препроцессора &НаКлиентеНаСервереБезКонтекста

Изменения версии 0.52 от 2019.04.08

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

- Из предопределенных строковых параметров удалялись пробелы. Пример: Функция ИмяФункции(Значение="1 2 3 4 5") Преобразовывалось в ИмяФункции(Значение="12345")

- оптимизирован механизм переноса команд препроцессора / определение областей.

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

Буду показывать на примере js

Проверяем на наличие пакеров в данной js.

Пакеров нету, функции открыты.
Если нету пакеров то можем зайти в обычный de4js

Переход на de4js
После деобуфа видим данную картину:

Функции у нас закрыты, а так же код идет без отступов.
Да! Можно все пофиксить ренеймом и пробелами, но зачем?

Заходим в beautify и прогоняем код.
переходим сюда

ссылка на сайт

С этого момента вы мамин пастер и можете писать свой корд.

iloveu

iloveu

Tornado Legend

Tornado Legend

mastermind

SenkoTech / beta-user

mastermind

Доброго времени суток , дорогой юзер нашего любимого форума .

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

Буду показывать на примере js

Проверяем на наличие пакеров в данной js.

Посмотреть вложение 13545
Пакеров нету, функции открыты.
Если нету пакеров то можем зайти в обычный de4js

Переход на de4js
После деобуфа видим данную картину:
Посмотреть вложение 13546
Посмотреть вложение 13559
Функции у нас закрыты, а так же код идет без отступов.
Да! Можно все пофиксить ренеймом и пробелами, но зачем?

С этого момента вы мамин пастер и можете писать свой корд.
Посмотреть вложение 13562

Читайте также: