Обфускатор

Обфускатор.

Здравствуйте дорогие читатели nookery.ru. Сегодня я хочу поговорить о не мало важном моменте в жизни программирования. Я думаю каждый из вас когда потратил уйму времени на написания кого либо проекта, программы, особенно если он является коммерческой основой для вас. То рано или поздно встает вопрос о том как скрыть код (листинг) программы, дабы избежать вмешательства из вне. Особенно важная тема этого вопроса стоит в java, потому что достаточно распаковать jar фаил и открыть любой из ваших классов декомпилятором, злоумышленник увидит ваш код, словно он его писал. Скажу честно, как в java так и в других языках программирования закодировать код программы не возможно на сто процентов. В том же C++, С, Delphi итд, любую из программ можно открыть в Debugger зная ассемблер отредактировать исходный код и получить нужный результат. Помню еще в 2005 году, когда информации и интернет был не у всех, а памяти на дискетах и жестких дисках не хватало катастрофически. Почти все использовали архиваторы. Вот и мне попалась одна из версий winzip архиватора, которая требовала постоянно ключ, а работала она всего 30 дней. На тот момент у меня были минимальные знания в ассемблере. Так вот, мне потребовался один вечер что бы подправить код в winzip, для того что бы им, я мог пользоваться так словно это платная версия. Но что же делать спросите вы, отдать свою программу на растерзание? Нет, конечно, существуют программы так называемые обфускаторы . Обфускатор – это программа которая в автоматическом режиме запутывает ваш код делая его не читабельным, удаляет все ваши комментарии, переименовывает переменные. Порывшись в интернете я не нашел большого количества обфускаторов для java как я это предполагал. И принцип даже у тех что был, оставался практически идентичным. Главной особенностью и большим плюсом программы является именно обфускация, оптимизация, и сжатия исходного кода, и конечно же то что она бесплатная. В этой статье и пойдет речь об этой программе настройке итд, так как она на английском языке, то у многих программистов возникает трудности в работе с ней. Однако пока писал статью загрузил 4 обфускатора в том числе и платных триал версией, посмотреть разницы запутывания кода. Но если честно особой разницы между платной версией обфускаторов и с proguard я не заметил. По большей части если крекер имеет обфускатор которым был зашифрован ваш код программы, он может написать декомпилятор под него, главное разгадать алгоритм работы обфускатора. Радует то что proguard достаточно часто обновляется, что является его плюсом, однако минус его в том что он все доступен.

Статья: как пользоваться 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 должна стоять галка, этот параметр отвечает за запутывания классов и членов класса получают новые короткие случайные имена.
  • Overload aggressively (агрессивная перегрузка) должна стоять галка, позволяет еще больше запутать классы, давая одни и те же имена переменным, полям, методам. Однако проверяйте программу на наличие ошибок, после выставления этой опции.
  • Use unique class member names Так же желательно выставлять эту опцию позволяет создавать уникальные имена классов.
  • Dont use mixed case class names Желательно выставить этот параметр, так как он отвечает за регистр имен классов. Если он выставлен все классы будут с прописной буквы. Что затруднит читаемость вашего кода.
  • Flatten package hierarchy Если установить эту опцию то произойдет переупаковка всех пакетов, которые переименованы, перемещая их в единый родительский пакет. Если аргумент в строку не ввести , пакеты перемещаются в корневой пакет. Этот вариант является одним из примеров дополнительных запутывания имен пакетов. Он может сделать обработанный код меньше и менее понятным.
  • Repackage classes Установив эту опцию происходит переупаковка всех файлов классов, которые переименованы, перемещая их в единый пакет. Если аргумент в строку не ввести, пакет полностью удаляется. Эта опция отменяет опцию –flatten package hierarchy.
  • Adapt class strings данная опция позволяет String класса, которые соответствуют именам классов будут закодированы. Если оставить без изменения фильтр, все String классы будут адаптированы. Позволяет дополнительно кодировать всю работу с String классами.
  • Adapt resource file names опция задает файлы ресурсов, которые будут переименованы, на основе сбивающих с толку имена соответствующих файлов классов (если таковые имеются). Без фильтра, все файлы ресурсов, которые соответствуют файлам класса будут переименованы. С фильтром, только соответствующие файлы переименовываются.
  • Adapt resource file contents Опция позволяет обновить файлы по фильтру, обязательно должна стоять галка иначе произойдет сбой программы.
  • Native method name параметр стоит ПО умолчаниюю.

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

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

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

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

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

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

Обновлено: 08.04.2017 — 11:12

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.