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

Ugradjivanje koda komponente u aplikaciju?

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

[ Pregleda: 1417 | Odgovora: 14 ]

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

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.
29.02.2004. u 12:02 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

SuperModerator
Član broj: 17944
Poruke: 2408
193.203.9.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?01.03.2004. u 16:00
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.


▪ The quicker a phone is answered in sales, the slower it's answered in customer services - Brownridge's Law
▪ Democracy is a device that ensures we shall be governed no better than we deserve - George Bernard Shaw
▪ To err is human--and to blame it on a computer is even more so - Robert Orben
01.03.2004. u 16:00 

eon

Član broj: 10450
Poruke: 53
80.65.94.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 09:24
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?

06.03.2004. u 09:24 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

SuperModerator
Član broj: 17944
Poruke: 2408
193.203.9.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 12:18
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.



▪ The quicker a phone is answered in sales, the slower it's answered in customer services - Brownridge's Law
▪ Democracy is a device that ensures we shall be governed no better than we deserve - George Bernard Shaw
▪ To err is human--and to blame it on a computer is even more so - Robert Orben
06.03.2004. u 12:18 

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
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.
06.03.2004. u 16:49 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

SuperModerator
Član broj: 17944
Poruke: 2408
193.203.9.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 17:17
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]
▪ The quicker a phone is answered in sales, the slower it's answered in customer services - Brownridge's Law
▪ Democracy is a device that ensures we shall be governed no better than we deserve - George Bernard Shaw
▪ To err is human--and to blame it on a computer is even more so - Robert Orben
06.03.2004. u 17:17 

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
Citat:
Beskoristan je jer je IL veoma lako menjati.


Sad kontam.

Hmm...cisto informativno, jel' ista stvar sa java byte code-om?
06.03.2004. u 20:59 

Dragi Tata

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

Sajt: www.novetehnologije.com


Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.03.2004. u 21:10
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.
06.03.2004. u 21:10 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 9013
212.200.70.*

Sajt: www.diskusije.net


Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?06.12.2007. u 23:40
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.
06.12.2007. u 23:40 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

SuperModerator
Član broj: 17944
Poruke: 2408
195.252.78.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 08:52
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.
▪ The quicker a phone is answered in sales, the slower it's answered in customer services - Brownridge's Law
▪ Democracy is a device that ensures we shall be governed no better than we deserve - George Bernard Shaw
▪ To err is human--and to blame it on a computer is even more so - Robert Orben
07.12.2007. u 08:52 

Boško

Član broj: 32679
Poruke: 37
80.93.249.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 15:13
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.
07.12.2007. u 15:13 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

SuperModerator
Član broj: 17944
Poruke: 2408
195.252.78.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 16:05
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


▪ The quicker a phone is answered in sales, the slower it's answered in customer services - Brownridge's Law
▪ Democracy is a device that ensures we shall be governed no better than we deserve - George Bernard Shaw
▪ To err is human--and to blame it on a computer is even more so - Robert Orben
07.12.2007. u 16:05 

Boško

Član broj: 32679
Poruke: 37
80.93.249.*



Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 18:56
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.
07.12.2007. u 18:56 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 9013
212.200.70.*

Sajt: www.diskusije.net


Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?07.12.2007. u 19:53
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.
07.12.2007. u 19:53 

vladdy
Vladimir Jasovic
Chicago, USA

Član broj: 30119
Poruke: 136
71.239.77.*

Sajt: www.excelleinc.com


Profil

icon Re: Ugradjivanje koda komponente u aplikaciju?08.12.2007. u 17:23
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.
08.12.2007. u 17:23 

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

[ Pregleda: 1417 | Odgovora: 14 ]

Postavi temu Odgovori

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