Ответы:
"An instance of the ClassLoader class of the java.lang package is responsible for loading all classes. For system classes, that class loader is available through the getSystemClassLoader method of ClassLoader. For user classes, if that class is already loaded, you can ask for the ClassLoader with the getClassLoader method of Class." - взял из
http://java.sun.com/developer/JDCTechTips/2003/tt0819.html
А что мешает вашему класслоадеру Ваши классы расшифровывать, а другие нет - например по пакету определять чей класс и если не Ваш, то использовать стандартный класслоадер?
тов. Псих, если тебе нужно засекьюрить свои классы, чтоб их никто не мог украсть - юзай специальные компиляторы/оптимизаторы, "запутывающие" код (хз как называется, забыл и че-т не могу вспомнить).
Некоторые особо удачливые делают такую бяку, что после дизассемблирования снова собрать и запустить просто не получится.
#4: именно шифрование для .class никому накуй не нужно - применение придумать не то чтобы затруднительно... но зачем?
Можешь подумать на тему загрузки классов по сети (эт который network classloader) + шифрование (тож поддерживается).
точняк. неудобоваримое слово =)
хардварный ключ подделают (взломают дрова), код вытащат (экзампл - 1С). По сути вопрос лишь в том, насколько дорого защитить код и насколько он сам важен... Потому что совершенно надежного способа для защиты от незаконного распространения и изучения нет, и, по некоторым мыслям (с которыми я согласен) не будет в принципе. Разве что сама логика программы или самые "вкусные" детали работают на защищенном серваке, благо здесь java впереди планеты всей.
еще мысль подумалась: даже если считать, что всякие ключики и прочее будут надежными/некопируемыми и т.п. - сам-то classloader должен быть в прямом доступе...
Вообще, на сколько я правильно понял, если как и должно быть использовать схему с chained class loaders, то если родительский лоадер о классе не знает, то класс будет грузиться твоим лоадером. С системными классами тут вроде понятно, все из classpath будет загружено не твоим лоадером. Для jni наверное может потребоваться Thread.currentThread().setContextClassLoader().
Слушай это табак, лучше сигареты, у него нет прияваности и от него кайфуешь....
16 лет назад