Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ugradjivanje koda komponente u aplikaciju?

[es] :: .NET :: Ugradjivanje koda komponente u aplikaciju?

[ Pregleda: 3674 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

eon

Član broj: 10450
Poruke: 53
*.as54.bi.bih.net.ba.



Profil

icon Ugradjivanje koda komponente u aplikaciju?29.02.2004. u 12:02 - pre 244 meseci
Da li je moguce kada napisem komponentu/dll da mi to VS linkuje direktno u izvrsni kod aplikacije, a ne da moram vuci biblioteku komponente svuda za aplikacijom + da ne mogu sprijeciti nekoga da taj DLL koristi za svoju aplikaciju.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?01.03.2004. u 16:00 - pre 244 meseci
Na žalost, mislim da ovo što ti tražiš nije moguće, ali postoje mere kojima možeš sebe zaštititi. Najjednostavnija je da za svoju komponentu napraviš Designer klasu (pogledaj namespace System.ComponentModel.Design) a svoju komponentu sprečiš da se instancira u Designer modu ako Designer klasa nije prisutna (i nju naravno ne isporučuješ). Na mašini na kojoj ti radiš razvoj imaćeš tu klasu i moći ćeš da radiš. Naravno ni ovo ne sprečava "lopova" da kroz kod instancira tvoju komponentu u runtime-u ali mu svakao otežava rad, pošto će sve morati da radi kroz kod.


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

eon

Član broj: 10450
Poruke: 53
80.65.94.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 09:24 - pre 244 meseci
Dosao sam na neku ideju (nisam jos prakticno probao), pa da vidimo valja li i moze li se unaprijediti.

1. Odaberemo neku vrijednost za serijski broj, npr "AC-4421-BCC"
2. Propustimo taj serial kroz md5
3 Komponenta ili klasa sadrzi konstantan string, u koji se upisuje dobiveni md5 hash (prilikom pisanja komponente)
4. Pozivajuca aplikacija konstruktoru komponente salje gore navedeni serial, koji ga propusta kroz md5 i uporedjuje sa hashom koji vec ima kao konstantu.
5. Ako su isti, komponenta se normalno ponasa, a inace odbija da radi, ili prikazuje poruku o demo verziji (ako smo odlucili da prodajemo komponentu).

Moze i bez md5, tj. da se u komponenti cuva cist serijski broj, ali je ovako donekle sigurnije od disassembliranja (problem je samo kako zastititi serial u pozivajucoj aplikaciji, jer ga ona negdje mora cuvati). Mozda bi saznavanje tog stringa disasembliranjem moglo biti otezano ako bismo ga sklapali postepeno u kodu aplikacije?

 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 12:18 - pre 244 meseci
Citat:
eon:
Dosao sam na neku ideju (nisam jos prakticno probao), pa da vidimo valja li i moze li se unaprijediti.

1. Odaberemo neku vrijednost za serijski broj, npr "AC-4421-BCC"
2. Propustimo taj serial kroz md5
3 Komponenta ili klasa sadrzi konstantan string, u koji se upisuje dobiveni md5 hash (prilikom pisanja komponente)
4. Pozivajuca aplikacija konstruktoru komponente salje gore navedeni serial, koji ga propusta kroz md5 i uporedjuje sa hashom koji vec ima kao konstantu.
5. Ako su isti, komponenta se normalno ponasa, a inace odbija da radi, ili prikazuje poruku o demo verziji (ako smo odlucili da prodajemo komponentu).


Taj string koji pominješ je veoma lako izvući iz IL koda komponente. Izvežbanom oku ne bi trebalo više od 30 sekundi da ga locira. Imaš nekoliko raspoloživih komercijalnih paketa za zaštitu .NET aplikacija, kako obfuscatora (koji preimenuju nazive u metadata i otežavaju analizu koda) tako i licence engine-a baziranih na PKI infrastrukturi.


Citat:

Moze i bez md5, tj. da se u komponenti cuva cist serijski broj, ali je ovako donekle sigurnije od disassembliranja (problem je samo kako zastititi serial u pozivajucoj aplikaciji, jer ga ona negdje mora cuvati). Mozda bi saznavanje tog stringa disasembliranjem moglo biti otezano ako bismo ga sklapali postepeno u kodu aplikacije?


MD5 ti ne pomaže ništa, svejedno je čupao serijski broj iz koda ili njegov hash.
Sklapanje stringa u više koraka malo, ali samo malo, otežava čupanje istog. Ovo znam iz iskustva.



Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

eon

Član broj: 10450
Poruke: 53
*.as54.bi.bih.net.ba.



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 16:49 - pre 244 meseci
Sve mi je jasno, ali ne znam zasto smatras da md5 ne pomaze. Lako je iscupati md5 hash, ali je on beskoristan, jer komponenta zahtijeva pri instanciranju da joj se proslijedi cisti string, kako bi ga uporedila sa hash-om. A slozicemo se, iz md5 hasha nije bas lako izvuci izvorni string.
Slaba tacka je na pozivajucoj aplikaciji i na tome kako ona da cuva taj string. Mada, ako ti obfuscatori rade dobro, onda nije potrebno nikakvo dodatno skrivanje.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 17:17 - pre 244 meseci
Beskoristan je jer je IL veoma lako menjati. Cilj je bio koliko se sećam da se zaštiti komponenta od korišćenja u neovlašćenoj aplikaciji. Jednim prostim disasembliranjem, preskakanjem kreiranja hash-a u tvom kontruktoru mogu da prosledim hash kao ulazni parametar, ponovo iskompajliram DLL (a pošto kradem kod, baš me briga i ako ne mogu da reprodukujem strong name) i koristim. Ako sam baš bezobrazan mogu i da promenim komparaciju hash vrednosti i da dozvolim instanciranje za sve pogrešne serijske brojeve . Ovde ti ni obfuscator ne vredi jer se odmah vidi iz koje obfuskovane konstante/varijable uzimaš hash i koji je ulazni parametar, tako da je vrlo lako pronaći kod za proveru.
Ceo .NET community je praktično jednoglasan da je sa stanovišta zaštite intelektualne svojine .NET jednostavno šupalj. Ni C++ kod iskusnom hakeru ne predstavlja problem, ali je sa .NETom stvar još pojednostavljena. Ono što možeš je da neke kritične stvari odradiš u managed C++ (ovo su mi inače oni sami predložili na microsoft.csharp newsu) i da upotrebiš designer klase da sprečih vizuelno korišćenje kontrole kroz vs.net form designer

[Ovu poruku je menjao Dragi Tata dana 06.03.2004. u 14:06 GMT]
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

eon

Član broj: 10450
Poruke: 53
*.as54.bi.bih.net.ba.



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 20:59 - pre 244 meseci
Citat:
Beskoristan je jer je IL veoma lako menjati.


Sad kontam.

Hmm...cisto informativno, jel' ista stvar sa java byte code-om?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-4.dialup.nethere.net



+6 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 21:10 - pre 244 meseci
Jeste, i sa Javom je slična stvar. To je jedan od razloga što se Java praktično isključivo koristi za server-side aplikacije, gde ovakvi problemi po prirodi stvari ne postoje.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.12.2007. u 23:40 - pre 198 meseci
Pitam se, ima li nekih novih "fora" za ovu zastitu od novlascenog koriscenja. Konkretnije sledece dve situacije me interesuju:
1. Napravim Class library projekat sa klasama koje hocu da koristim u raznim projektima. Napravim neku aplikaciju, isporucim je sa sve .dll-ovim iz library-a i... kako spreciti da neko uzme te iste klase i koristi za nesto sasvim drugo? Znaci, prakticno ista stvar kao kod pokretaca teme, samo me zanima da li su smisljeni neki novi nacini :)

2. Isto to, samo su u pitanju user controls u asp.net-u. Znaci, hocu da ih imam u svom projektu ali da sprecim da kada nekom (pro)dam proizvod koji ih koristi on ne moze da ih koristi na nekom drugom mestu.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 08:52 - pre 198 meseci
Koliko ja znam nisu Prica vazi jos uvek A za asp.net kontrole bi stvarno mogao da iskoristis design klasu da se iole zastitis i otezas posao lopovu.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
80.93.249.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 15:13 - pre 198 meseci
Evo da predložim dva rešenja po sistemu "snađi se". Nisu baš idealna, ali će možda pomoći:

1. U slučaju da ne želiš poseban .dll, kompletan kod komponente piši u okviru projekta aplikacije, a ne kao zaseban projekat. E sada, ako želiš da komponentu koristiš u drugom projektu, moraćeš da prekopiraš i uključiš potrebne fajlove u novi projekat. To otežava održavanje komponente, ali što ne platiš na mostu...

2. Ukoliko ne želiš da neko koristi tvoju komponentu probaj sledeće: Sve f-je, properties i dr. u komponenti stavi na private, a onda napiši jednu public koja će primati npr. DataSet ili neku strukturu koji će sadržati sve promenljive za sve f-je, properties i dr. iz komponente i prosleđivati gde šta treba. Oblik, sadržinu, tipove podataka DataSeta ili strukture ćeš znati samo ti, tako da niko neće moći proslediti ispravne podatke komponenti.

Kao što rekoh, ovo nisu baš idealna rešenja i ne mogu se primeniti baš u svim slučajevima, ali u nekoj varijanti što da ne.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 16:05 - pre 198 meseci
Sorry, al nijedna od tih opcija ne pije vodu.

1. To sto klasu ne drzis u posebnom DLLu nije nikava poruka, disasembleri mogu elegantno da ti povade odredjene klase i sve klase na koje se ova nasledjuje ili ih enkapsulira i da to iskompajlira nazad u poseban DLL

2.Takodje veoma lako resivo, disasmbler, prebacis sve private u public i ponovo iskompajliras i mozes da zaobidjes te ebskurne proxy metode

Ljudi, jednostavno se pomirite sa time da nema efikasne zastite koja moze da vas zastiti cak i od prosecnog korisnika koji zna da barata IL-om, a kamoli od nekog eksperta koji se namerio na vas kod. Obfuskacija moze donekle da pomogne ako imas dosta internih klasa koje ne ulaze u metadata biblioteke, ali je i tada zastita providna i "resiva". Da ne pominjem koriscenje call level profajlera i pracenja koje metode se pozivaju u okviru zeljenih oepracija aplikacije (one koje neko hoce da ti mazne . Alternativa je da metodama i klasama dajes imena koja nemaju veze sa njihovom funkcijom, ali sanse su da ces time vise zbuniti sebe nego onog ko pokusava da ti ukrade kod


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
80.93.249.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 18:56 - pre 198 meseci
Citat:
Ljudi, jednostavno se pomirite sa time da nema efikasne zastite koja moze da vas zastiti cak i od prosecnog korisnika koji zna da barata IL-om, a kamoli od nekog eksperta koji se namerio na vas kod...


Slažem se u potpunosti.
Ovo je bio samo predlog kako sprečiti nekoga da koristi kompajliran .dll, a ne predlog zaštite od hakera.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 19:53 - pre 198 meseci
Odnosilo se na .dll-ove, nije bilo prihvatljivo da ubacujem kod u aplikaciju.
Tacno je da se zvaki nacin moze obici, cak i kada nije u pitanju .net. Kod .net-a je to samo lakse nego kod native Win32 aplikacija. Najbolje resenje je zapravo ono koje ima najbolji odnos izmedju otezavanja posla zlonamrnom korisniku i programeru.
Do sada je najbolje predlozeno resenje bilo sa designer klasom, s' tim da to vazi samo za komponente/kontrole.
 
Odgovor na temu

vladdy
Chicago, USA

Član broj: 30119
Poruke: 137
71.239.77.*

Sajt: www.pro-transport.com


Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?08.12.2007. u 17:23 - pre 198 meseci
Microsoft ima 30,000+ softver inzenjera pa im opet krekuju, kradu i mijenjaju kako stignu.

Ne mislite da mozete na bilo koji nacin potpuno zastiti kod.

Managed code nije pravljen za low-level programiranje i sve prevodi u IL kod koji se veoma lako izvlaci.
Ono sto je moguce je koristeci obfuskaciju i ostale metode zastititi kod od script kiddies, amatera itd.

Znaci srazmerno cijeni/velicini aplikacije izaberes zastitu i to je to.

Mislim da nema potrebe za nekom vecom pricom, posebno me ne odusevljava pronalazenje tople vode i kojekakve MD5 ideje.
http://www.pro-transport.com - The most advanced trucking software on the market
 
Odgovor na temu

[es] :: .NET :: Ugradjivanje koda komponente u aplikaciju?

[ Pregleda: 3674 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.