скрит код
13 отговора
725 прегледа
скрит код
Разработвам приложение на JAVA и искам да скрия кода, но не знам как...
Класовете ми са в jar, може би има начин да се ограничи достъпът до архива?
Ако някой може да помогне...
...благодаря ви предварително...

Класовете ми са в jar, може би има начин да се ограничи достъпът до архива?
Ако някой може да помогне...
...благодаря ви предварително...
Re: скрит код
пробвай с някой obfuscator
няма да скрие кода, но ще го омаже достатъчно
няма да скрие кода, но ще го омаже достатъчно
Re: скрит код...
Преди време бях писал в този форум за кодиране на .class файловете и зареждането им в този им вид. Бих искал да споделим мнения по-подробно.
Sten78@mail.bg или ICQ: 138039706
няма проблеми, има само решения
Sten78@mail.bg или ICQ: 138039706
няма проблеми, има само решения
Re: скрит код ?
Ами като ти сложи за всички имена на класове, методи и променливи двубуквени съкращения после ходи търси кое какво прави.
Re: скрит код ?
ste ti kaja kakvo shte pravia ... ima neshta koito sa kluchovi za tova koeto ti tribva v koda shte t6rsia tiaj i po obratnia p6t ako mi tribva celia shte v6stanoviavam imenata :))) , golema rabota kat gi omaje , vajno e da imash sportna zloba .... 
Re: скрит код ?
Не е така лесно колкото си мислиш. Ако искаш можеш да се пробваш от спортна злоба да декомпилираш ICQ Webbie-то.
Е колкото и да си "злобен" то е толкова добре омазано, че просто много ще ти е трудно да разбереш за какво става дума там ;)
Е колкото и да си "злобен" то е толкова добре омазано, че просто много ще ти е трудно да разбереш за какво става дума там ;)
Re: скрит код ?
разбрах накъде биеш, но това не е решение, а наистина само "омазване" ...
имената на класовете и методите са замазани, но не можеш да скриеш кой кого наследява и към кои класове и методи се обръща
Ако търсиш внимателно и търпеливо скоро структурата лъсва и намираш каквото ти
трябва. Знам от личен опит, скоро бъзиках така един готин софтуер за
панорамен изглед дето хората си продават имотите във Фриско...
Преди известно време някъде бях видял нещо като JavaToExe прекомпилатор,
не знаете ли нещо подобно.
А и наистина ли не може да се заключи jar-архива по някакъв начин...
имената на класовете и методите са замазани, но не можеш да скриеш кой кого наследява и към кои класове и методи се обръща
трябва. Знам от личен опит, скоро бъзиках така един готин софтуер за
панорамен изглед дето хората си продават имотите във Фриско...
Преди известно време някъде бях видял нещо като JavaToExe прекомпилатор,
не знаете ли нещо подобно.
А и наистина ли не може да се заключи jar-архива по някакъв начин...
Re: скрит код ?
Mnogo si prav, kakvo ima da se t6rsi v edin comerialen java code, za kakavto stava i vapros maj, mi razbirase registracita na softa , i moje bi oshte niakoineshta.
osven za java2exe koeto e dosta d6rveno i sled nego prilojenieto pret6rpava dosta ogranichenia(naprimerno zabraviash za RMI, a ot tam i za EJB i .... ) s6m vijdal oshte edno reshenie no ne sam go testval, na saita na edin shtatski universitet imashe
java2c compilator.
osven za java2exe koeto e dosta d6rveno i sled nego prilojenieto pret6rpava dosta ogranichenia(naprimerno zabraviash za RMI, a ot tam i za EJB i .... ) s6m vijdal oshte edno reshenie no ne sam go testval, na saita na edin shtatski universitet imashe
java2c compilator.
Re: скрит код ?
Това java2exe е много елементарно. То е подобно на най-обикновен jar файл, само дето java.exe -то реално е самата програма.
Как? - Ами просот. java.exe е само един единствен файл main.c който се компилира и се линква със библиотеките на виртуалната машина. Реално тази програма просто отделя параметрите и стартира виртуалната машина. Java2EXE работи на подобен принцип. Те си пишат собствен main.c който стартира виртуалната машина. В самото .exe като ресурси или по някакъв друг начин добавят класовете. При изпълнение на exe-то класовете могат да бъдат копирани някъде и на виртуалната машина се казва да ги изпълни. Това обаче значи, че ТРЯБВА да имаш задължително инсталирана Java. В противен случай програмите направени с java2exe няма да работят.
Колкото до обфускаторите има и много по-advanced техники. Само замазването на имената наистина позволява декомпилация, но в класа може да се наръга и невалиден байткод, който реално никога не се изпълнява но пък обърква декомпилатора и не може да генерира правилен код.
Освен това ако имаш нещо такова:
class X {
void a(float x) {...}
void b(double x) {...}
void c() {
a(1.1);
}
}
Това нещо може да мине през обфускатор и да се получи:
class X {
void x(float x) {...}
void x(double x) {...}
void x() {
x(1.1); //тук ще се викне x(double), понеже javac винаги взема константи с десетична точка за double, реално обаче както виждаш от кода по-горе трябва да се викне другият метод.
}
}
Друг пример:
class A {
class B {
B() {
new A();
}
}
...
}
Обфускатора го прави:
class X {
class X {
X() {
new X(); //кой клас точно се инстанциира?
}
}
...
}
Има и много други техники, които наистина могат да предпазят кода.
Колкото до кодиране на jar файла това наистина е възможно, но съм убеден, че това допълнително ще забави изпълнението на програмата. А скоростта при java е критичен момент.
Как? - Ами просот. java.exe е само един единствен файл main.c който се компилира и се линква със библиотеките на виртуалната машина. Реално тази програма просто отделя параметрите и стартира виртуалната машина. Java2EXE работи на подобен принцип. Те си пишат собствен main.c който стартира виртуалната машина. В самото .exe като ресурси или по някакъв друг начин добавят класовете. При изпълнение на exe-то класовете могат да бъдат копирани някъде и на виртуалната машина се казва да ги изпълни. Това обаче значи, че ТРЯБВА да имаш задължително инсталирана Java. В противен случай програмите направени с java2exe няма да работят.
Колкото до обфускаторите има и много по-advanced техники. Само замазването на имената наистина позволява декомпилация, но в класа може да се наръга и невалиден байткод, който реално никога не се изпълнява но пък обърква декомпилатора и не може да генерира правилен код.
Освен това ако имаш нещо такова:
class X {
void a(float x) {...}
void b(double x) {...}
void c() {
a(1.1);
}
}
Това нещо може да мине през обфускатор и да се получи:
class X {
void x(float x) {...}
void x(double x) {...}
void x() {
x(1.1); //тук ще се викне x(double), понеже javac винаги взема константи с десетична точка за double, реално обаче както виждаш от кода по-горе трябва да се викне другият метод.
}
}
Друг пример:
class A {
class B {
B() {
new A();
}
}
...
}
Обфускатора го прави:
class X {
class X {
X() {
new X(); //кой клас точно се инстанциира?
}
}
...
}
Има и много други техники, които наистина могат да предпазят кода.
Колкото до кодиране на jar файла това наистина е възможно, но съм убеден, че това допълнително ще забави изпълнението на програмата. А скоростта при java е критичен момент.
Re: скрит код ?
Има и друг вариант - gcj. Това нещо компилира java програма до native. Реално то си има библиотеки в които цялата клас библиотека е имплементирана изцяло native. Доколкото разбрах позволява дори и динамично зареждане на класове. Общо взето е добро ... но засега работи само под Линукс. Освен това съвсем ясно е, че едно native приложение вече не cross-platform, и веднага се губи смисълът от java-та.
Друга възможност е да се ползва JVM с АОТ (Ahead of Time compilation). Този AOT работи на принципа на JIT-a, само, че докато JIT-a компилира по време на изпълнение на програмата AOT-a компилира предварително в готови прекомпилирани native приложения. За тези приложения обаче все още има нужда от JVM - и то същата с която са произведени. Ако искате можете да погледнете виртуалната машина на IBM - VAME, която сега е част от WebSphere Embedded Edition.
Друга възможност е да се ползва JVM с АОТ (Ahead of Time compilation). Този AOT работи на принципа на JIT-a, само, че докато JIT-a компилира по време на изпълнение на програмата AOT-a компилира предварително в готови прекомпилирани native приложения. За тези приложения обаче все още има нужда от JVM - и то същата с която са произведени. Ако искате можете да погледнете виртуалната машина на IBM - VAME, която сега е част от WebSphere Embedded Edition.
Re: скрит код ?
ne e to4no taka, ti ima6 predvid obiknoven .bat fail, koito startira java.exe na JVM s argument main.class na prilojenieto.... Az imah predvid drugo - realno kompilirane do ma6inni instrukcii - prilojenieto stava .exe kato vsjako drugo, napisano na C, C++ ili Delphi, no za konkretnata platforma. JIT (just in time) kompilatora na JVM pravi sa6toto, samo 4e real-time, ne e problem da se napravi i az namerih dosta takiva ne6ta kato se porovih...
Dosta govori6 za "zamazva4ki"...daj mi njakakva informacija, da gi vidja i tjah...
Ako iska6 tuka, moje i na jordan_gv@abv.bg
Dosta govori6 za "zamazva4ki"...daj mi njakakva informacija, da gi vidja i tjah...
Ako iska6 tuka, moje i na jordan_gv@abv.bg