Как избежать отладки кода в Java? - PullRequest
1 голос
/ 03 марта 2010

Мне нужно, чтобы приложения отладчика не отлаживали мой код. Для этого я использую следующий код в конструкторе моих классов:

        RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
    java.util.List<String> arguments = RuntimemxBean.getInputArguments();
    //System.setErr(null);

    for ( String str : arguments)
    {
        System.out.println("\n"+str);
        if ( str.contains("jdwp") || str.contains("debug"));
            System.exit(1);
    }

Пожалуйста, подтвердите мне, если этого кода будет достаточно, или все же должен быть более разумный способ (который, как думают, должен быть!) Сделать это ... Я разработал этот код с отладчиками, такими как JDB, Eclipse IDE, Netbeans.

Ответы [ 3 ]

3 голосов
/ 03 марта 2010

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

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

1 голос
/ 03 марта 2010

Нет, этого кода недостаточно.

Как минимум Я могу войти в этот код, перешагнуть вызов getInputArguments() и заново установить arguments на Collections.emptyList().

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

0 голосов
/ 03 марта 2010

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

Рассматривали ли вы запутывание банок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...