Обфускация исходного кода Java для передачи клиентам

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

Я использую proGuard для обфускации jar-файлов, но эта обфускация выполняется на уровне ByteCode, как и в этом потоке Обфускировать исходный код Java

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

РЕДАКТИРОВАТЬ: необходимо выполнить операции:

1- удалить все комментарии из исходного кода.

2- объединить все классы в один пакет.

3- Иметь бессмысленные имена классов: (например, A, B, C ..)

4- удалить все модульные тесты.


person josephino    schedule 21.06.2017    source источник
comment
Почему вы даете своим клиентам исходный код, если они не могут его использовать? Почему бы просто не дать им скомпилированные Jar-файлы?   -  person Oliver Charlesworth    schedule 21.06.2017
comment
Для некоторых аудитов безопасности, чтобы убедиться, что нет никаких угроз безопасности.   -  person josephino    schedule 21.06.2017
comment
Что именно они хотят проверить? Уж точно не исходный код, если он запутан? Кроме того, им не хватит работоспособного дистрибутива для выполнения тестов?   -  person QBrute    schedule 22.06.2017
comment
@josephino Вы хотите, чтобы они провели аудит безопасности обфусцированного исходного кода?   -  person GriffeyDog    schedule 22.06.2017
comment
@QBrute Они хотят взглянуть на исходный код, в котором ничто внутри не представляет угрозы безопасности.   -  person josephino    schedule 22.06.2017
comment
@GriffeyDog Я просто хочу некоторую защиту исходного кода, я уже запутываю банки, поэтому мне интересно, можно ли иметь некоторую защиту при раздаче исходного кода.   -  person josephino    schedule 22.06.2017
comment
@josephino Вы говорите: Они хотят взглянуть на исходный код, в котором ничто внутри не представляет угрозы безопасности. Но вы хотите предоставить им запутанный исходный код. Вам не кажется, что из-за этого им будет довольно сложно его одитировать?   -  person GriffeyDog    schedule 22.06.2017
comment
@GriffeyDog, так что мне просто дать им исходный код и надеяться, что все будет в порядке? может быть, что-то вроде удаления всех комментариев и объединения классов в один пакет ...   -  person josephino    schedule 22.06.2017
comment
@josephino Я бы сказал, что у вас есть варианты: 1) предоставить исходный код как есть и позволить им провести его аудит или 2) не предоставлять исходный код. Только вы можете ответить, какой вариант лучше.   -  person GriffeyDog    schedule 22.06.2017
comment
@josephino Как ответил FiReTiTi ниже, не могли бы вы изучить что-то вроде NDA - документ, в котором говорится, что любой код, который они проверяют, является вашей исключительной собственностью? Проконсультировались ли вы со своей командой юристов (если она у вас есть)?   -  person deckeresq    schedule 22.06.2017
comment
Если исходный код лицензирован надлежащим образом, вы можете подать в суд на тех, кто нарушает лицензию. В производственном JAR не должно быть никаких модульных тестов, которые нужно удалить для начала. Вы не можете запутать Java-код. Объединение классов в единый пакет - плохая идея: таким образом вы наносите вред самому коду, а не защищаете его. Вы уверены, что кто-нибудь захочет украсть ваш код? Вы уверены?   -  person Lew Bloch    schedule 22.06.2017


Ответы (1)


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

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

person FiReTiTi    schedule 21.06.2017