Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: trinnn1 25. 06. 2012, 11:18:22
-
Jak je to s Javou kdybych chtěl vytvořit uzavřený kód? Platí se za to něco Oraclu?
-
Keby si chcel upravit JDK alebo JRE a uzavriet zdrojaky, tak ano, je treba sa dohodnut (otazka je sice formulovana aj takto, ale toto nepredpokladam).
Ak chces len spravit program, ktory bude napisany v Jave a bude pouzivat Javovske libraries, tak netreba platit nikomu nic.
-
ted polozim jednu obzvlast hloupou otazku, tak me prosim nekamenujte :): lze vytvořit jar soubor tak aby z toho nebyl pro cizí uživatele zjistitelný kód?
a pokud bych vytvořil program, který by si někdo chtěl ode mě koupit, bude po mě Oracle něco chtít?
-
Ne, Oracle po tobě nebude nic chtít.
-
V Jave nedelam, takze to ber jen jako nastrel. V Jave, .NET a podobnych VM je vetsinou k dispozici nejaka moznost nacteni kodu z pameti. U Javy je to myslim ClassLoader. Je tedy mozne mit vse, krome nejakeho zavadece, zasifrovano pres nejaky klic v souboru, ktery se pak nacte, rozkoduje a spusti. Nevim jestli Java podporuje i pripadnou ochranu proti cteni pameti apod., ale jako zakladni jednoducha ochrana to muze stacit. Klic k odkodovani muze byt urceny na miru k pocitaci, uzivateli, nebo stazen z internetu.
-
Díky dost si mi pomohl...
-
Muzes nejak poodhalit o co presne ti jde? Na prvni pohled to vypada, ze nemas zadny velky zkusenosti z programovanim, ale na druhou stranu predpodladas, ze prave tvuj kod bude natolik zajimavej ze bude nekomu stat za reverzovani.
Jak pro Javu tak i pro .Net existuji docela schopne de-kompilatory.
-
Muzes nejak poodhalit o co presne ti jde? Na prvni pohled to vypada, ze nemas zadny velky zkusenosti z programovanim, ale na druhou stranu predpodladas, ze prave tvuj kod bude natolik zajimavej ze bude nekomu stat za reverzovani.
Jak pro Javu tak i pro .Net existuji docela schopne de-kompilatory.
řekněme, že dělám na jednom projektu (programu), který má komerční potenciál a potřeboval jsem vědět jak je to s použitím javy jako prostředku pro výrobu onoho programu tak, aby to případná konkurence neměla tak jednoduchý...
samozřejmě kód to nebude nijak objevný, spíš relativně obsáhlý a jeho tvorba zabere nějaký čas - a nerad bych aby byl zbytečný...
-
Všechno se dá okopírovat a nepotřebuješ k tomu nějaký hacking. Prostě si naprogramuješ vlastní verzi tvého programu s vlastním kódem.
To programuješ ty?
-
java obfuscator, pripadne to zkompiluj do exe
-
řekněme, že dělám na jednom projektu (programu), který má komerční potenciál a potřeboval jsem vědět jak je to s použitím javy jako prostředku pro výrobu onoho programu tak, aby to případná konkurence neměla tak jednoduchý...
Komerční potenciál věcí v Javě je blízký nule, respektive program se dá prodat pouze párkrát a potenciální konkurenci dáváš zdrojáky jako na stříbrném podnose. Obfuskátor je asi taková překážka jako cedulka Zákaz vstupu.
Aby to konkurence měla aspoň těžší, je třeba použít nějakou pokročilou techniku ochrany jako třeba self-modifying code, hrátky se zásobníkem a podobně a to je v Javě prakticky nemožné.
Poměrně dobré úspěchy jsou s externím hardwarovým klíčem připojeným přes USB, ale to leze do peněz.
-
V Jave nedelam, takze to ber jen jako nastrel. V Jave, .NET a podobnych VM je vetsinou k dispozici nejaka moznost nacteni kodu z pameti. U Javy je to myslim ClassLoader. Je tedy mozne mit vse, krome nejakeho zavadece, zasifrovano pres nejaky klic v souboru, ktery se pak nacte, rozkoduje a spusti. Nevim jestli Java podporuje i pripadnou ochranu proti cteni pameti apod., ale jako zakladni jednoducha ochrana to muze stacit. Klic k odkodovani muze byt urceny na miru k pocitaci, uzivateli, nebo stazen z internetu.
Žádný program na světě nelze ochránit před vyčtením kódu nebo dat z RAM a aby byl program funkční, musíš dříve nebo později dešifrovat, takže útočník si na to počká a prostě si to zkopíruje.
-
Skôr Ti doporučím spraviť to ináč. Sprav servrovú aplikáciu, ktorá bude mať všetku funkcionalitu na serveri a zákazníkovi daj len jednoduchého klienta, ktorý bude komunikovať so serverom. Zákazník nebude mať na svojej strane žiadny kód a prístup k serveru zabezpečíš jednoducho napríklad cez meno a heslo, alebo ako len chceš.
-
s Javou začínám, takže chápu, že některý otázky mohou být pro znalce stupidní...
jinak díky za všechny reakce pomohlo mi to udělat si o tom komplexnější obraz...
Skôr Ti doporučím spraviť to ináč. Sprav servrovú aplikáciu, ktorá bude mať všetku funkcionalitu na serveri a zákazníkovi daj len jednoduchého klienta, ktorý bude komunikovať so serverom. Zákazník nebude mať na svojej strane žiadny kód a prístup k serveru zabezpečíš jednoducho napríklad cez meno a heslo, alebo ako len chceš.
aplikace musí používat server (na sdílení dat, mezi dvěma uživateli), chtěl jsem ale mít i desktop pro offline práci...
teď to asi udělám tak, že to bude primárně webová aplikace, kterou po nějaký době uvolním jako open-source i na desktopy...
chci prostě zabránit tomu (jsem trošku paranoidní), aby po měsíci co bude aplikace vypuštěna, někdo prostě nevzal její kód nepřidal tam jednu dvě funkce na víc a nevydával to za svůj výtvor...
-
Vystupem z jakehokoliv prg jazyka je mikrokod, ktery zpracuje procesor. Jakakoliv ochrana je k nicemu, protoze prinejhorsim z toho holt dostanes assembler. Obejit to nijak nelze - pokud by to bylo technicky mozne, a nekdo to umel, byl by dneska milionar.
Nejlepsi varianta je asi ta server-clinet aplikace. Ale zase - pokud nemas dost zkusenosti, tak ti server nekdo hackne raz dva. Navic zase muze odchytavat komunikaci mezi klientem a server a odtud taky lze ziskat nejake informace, nebo predstavu, jak to asi funguje.
chci prostě zabránit tomu (jsem trošku paranoidní), aby po měsíci co bude aplikace vypuštěna, někdo prostě nevzal její kód nepřidal tam jednu dvě funkce na víc a nevydával to za svůj výtvor...
navic tohle nechapu - chces to vydavat jako OS, ale zaroven chces zdrojak tajit? Vykradani kodu prece brani licence - jeji poruseni je trestne vymahatelne...
Realne - sance, ze ti ty zdrojaky nekdo ukradne je mnohem mensi, nez pravdepodobnost, ze to vubec dotahnes do produkce. No flame, kazdy nejak zacina....
-
máš pravdu, teď mi to došlo...:D
jak řikám, sem začátečník a některý spojitosti (pro někoho nad slunce jasný) mi docházej pomalejc...
vlastně když někdo použije můj kód tak já to vlastně taky mohu zjistit, protože jeho aplikace taky nebude nijak zašifrovaná :D - měl sem obavy z toho dokazování...
-
Skôr Ti doporučím spraviť to ináč. Sprav servrovú aplikáciu, ktorá bude mať všetku funkcionalitu na serveri a zákazníkovi daj len jednoduchého klienta, ktorý bude komunikovať so serverom.
To funguje, ale málokdo je ochoten za tohoto holuba na střeše zaplatit nějakou významnou částku a ve spoustě firem je přístup na internet z technických nebo politických důvodů nemožný, takže vyžadují kompletní dodávku software přímo na jejich hardware.
-
Pokud by jsi chtěl jít do extrému, tak můžeš zkusit do své aplikace implementovat prvky whitebox cryptography. To je metoda která umožní "schovat" šifrovací klíč třeba od AES do kódu tak že ani vlastnictí zdrojáku nepomůže, pokud nějak chytře nahákuješ kusy kódu na dešifrování tak by jsi teoreticky mohl udělat zdroják který nejde lousknout respektive nepoběží bez "krabice", a krabice může chtít tahat data ze sítě a nebo si vynutit vykonání určité činnosti a tu kontrolovat.
Příklad na generování zdrojáku dekryptoru AES pro konkréní klíč: http://files.rsdn.ru/45067/aesig.zip
vytvoří decryptor který dešifruje AES podle tebou zadaného klíče, sice je to v c ale asi by nebyl problém předělat to tak aby to generovalo javu. Samozřejmě je také možné to použít na vlastní FUD crypter těmi kdo dělají malware. Souborek doporučuji zálohovat, je to masíčko ;) Exáčům nevěřit, zdroják je ale ok...
Prakticky se to dá použí na implementaci DRM a možná i pro vynucení funčnosti uzlu v síti p2p tak aby je to donutilo uploadovat, ale tuto možnost zatím prověřuji. Třeba udělat stavový automat a stavy nějak hnát šifrovaně přes tu krabici a výstup použít k verifikaci chování, nevím.
Jinak spolu s obfuskátorem získáte něco horšího než BLOB a přitom to můžete šířit pod GPL...
-
Waseihou, to je vlastně úplně stejný princip, na jakém fungují online hry typu WoW a Diablo 3, ne? Že to některá data streamuje ze serveru a bez toho to nefunguje.
-
No ten program co jsem dal odkaz neumí nic jiného než vygenerovat zdroják který dešifruje data zašifrovaná pomocí AES nějakým klíčem. Jak s tím naložíte je už jen na vás, není jednoduché vymyslet co s tím. Vlastností která to činí zajímavým je že by ani ze zdrojáku nemělo být snadné klíč uhodnout a nebo ho změnit. Takže obfuskujete a zašifrujete zdroják a hodíte do pole, vytvoříte decryptor včetně skrytého klíče, a pak při startu programu rozšifrujete kód do paměti a pustíte to. Na oba zdrojáky hodíte GPL GNU licenci a můžete používat i GPL knihovny aniž byste je porušili. Tahle metoda se ale primárně používá pro skrývání virů - hledejte FUD crypter, a bacha na antiviry, toto chování programu už dnes zkouší detekovat, ale to už pak váš crypter není FUD ;)