Скрывает ли мое настольное приложение Java внутри виртуальной машины лучший способ защитить исходный код Java? [dубликат]

Вы можете проверить свойство PartOfDomain класса WMI Win32_ComputerSystem. [D0] MSDN говорит:

PartOfDomain

Тип данных: boolean

Тип доступа: только для чтения

Если True, компьютер является частью домена. Если значение NULL, компьютер не находится в домене или статус неизвестен. Если вы отсоедините компьютер от домена, значение станет false.

  /// & lt; summary & gt;  /// Определяет, является ли локальная машина членом домена.  /// & lt; / summary & gt;  /// & lt; возвращает & gt; Булево значение, указывающее, является ли локальная машина членом домена. & lt; / returns & gt;  /// & lt; примечания & gt; http: //msdn.microsoft.com/en-us/library/windows/desktop/aa394102%28v=vs.85%29.aspx< / замечания & gt;  public bool IsDomainMember () {ManagementObject ComputerSystem;  using (ComputerSystem = new ManagementObject (String.Format ("Win32_ComputerSystem.Name = '{0}'", Environment.MachineName))) {ComputerSystem.Get ();  object Result = ComputerSystem ["PartOfDomain"];  return (Результат! = null & amp; & amp; (bool) Результат);  }}  
5
задан obfuscer 20 November 2010 в 11:31
поделиться

3 ответа

Вы можете сделать свой плагин своим сервисом по RMI . Таким образом, плагин будет приложением и может быть скомпилирован в собственный код.

0
ответ дан josefx 15 August 2018 в 17:09
поделиться
  • 1
    Действительно хороший момент, спасибо. Я подозреваю, что из процесса RMI будет слишком много штрафных санкций, но я могу попробовать. Добавленный бонус - это то, что я мог бы использовать gcj. Я бы хотел, чтобы API, который я пишу, был более удобным для сериализации. – obfuscer 20 November 2010 в 13:08

Я предполагаю, что у вас есть веские причины пойти на сборник. Опция, которую вы можете проверить, - Excelsior JET , которая является сертифицированным решением Java.

1
ответ дан renick 15 August 2018 в 17:09
поделиться
  • 1
    Тем не менее он запускает свое собственное время выполнения: «Результирующим исполняемым файлам необходимо запустить Exelsior JET Runtime, но не Sun JRE. & Quot; ( excelsior-usa.com/jetfaq.html ) – obfuscer 20 November 2010 в 13:10
  • 2
    Ну, +1 в любом случае для того, чтобы быть очень интересным продуктом. – Mike Clark 21 November 2010 в 02:09
  • 3
    Любому Java-приложению требуется среда выполнения Java с сборщиком мусора, изоляция контекста (будь то JNI, CNI или что-то еще) и т. Д. Excelsior JET просто прекомпилирует байт-код до оптимизированного собственного кода. У него все еще есть компилятор JIT для обработки классов, которые не были предварительно скомпилированы - динамические прокси, сторонние плагины и т. Д. – Dmitry Leskov 22 November 2010 в 06:23

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

2
ответ дан user207421 15 August 2018 в 17:09
поделиться
  • 1
    Обфускация не предназначена для "предотвращения" обратную инженерию, чтобы сделать ее более сложной. До тех пор, пока вы знаете, что если вы распространяете исполняемый код, на самом деле невозможно полностью предотвратить обратное проектирование, нет ничего плохого в использовании обфускации в качестве сдерживающего фактора. – Grodriguez 21 November 2010 в 21:18
  • 2
    Существует определенная стоимость и возможная выгода. Это деловое решение. – user207421 22 November 2010 в 01:52
  • 3
    Вы можете сказать то же самое для любой функции любого программного продукта. Решение о том, реализована ли функция, является бизнес-решением. Дизайн и внедрение - это техническое задание. Аналогичным образом, решение о том, следует ли использовать обфускацию, - деловая проблема. Обфускация сама по себе является технической темой. – Grodriguez 22 November 2010 в 11:13
  • 4
    @Grodriguez: обфускация делает обратное проектирование более трудоемким - истинным (но не слишком много), также обеспечивает хорошие молитвы для родственников разработчиков, но в итоге ничего не достигает. – bestsss 28 January 2011 в 03:01
  • 5
    @bestsss: Вы говорите о «нарушении лицензий». Это не имеет никакого отношения к моим аргументам. Я никогда не говорил, что обфускация полезна для предотвращения защиты от копирования. Я сказал, что это затрудняет обратное проектирование. Что он делает. – Grodriguez 7 February 2011 в 09:03
Другие вопросы по тегам:

Похожие вопросы: