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

Ugradjivanje DLL-ova u EXE fajl

[es] :: .NET :: Ugradjivanje DLL-ova u EXE fajl

[ Pregleda: 3214 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Gosovic
Sasa Gosovic
Beograd

Član broj: 24224
Poruke: 68
*.dynamic.sbb.co.yu.



Profil

icon Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 09:39 - pre 207 meseci
Imam neke Dll-ove koji mi trebaju a ne zelim da ih distribuiram uz aplikaciju. Ima li neki nacin da se "ugrade" u exe fajl? U Visual Studiju postoji 'resources' i tu ubacim dll fajlove i oni se zaista ugrade u exe fajl (dokaz za to jeste da se exe poveca za velicinu istih) ali problem je sto ne mogu da ih koristim odatle, uvek mi trazi da imam fizicki dll. Daklem, pitanje je: kako napraviti referencu ka dll fajlovima koji bi se nalazili u resources? Na netu sam nasao primere kako neki fajl iz resursa moze da se "otpakuje" i iskoristi, recimo da se vidi ikonica, da se pusti wav ali nema nista kako bi se hendlovali dll-ovi tj. kontrole i funkcije iz njih.



 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 11:09 - pre 207 meseci
Napisi linker

http://www.microsoft.com/downl...14ae6a939b0&displaylang=en
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 12:27 - pre 207 meseci
Mozes i da iskoristis AssemblyResolve event iz AppDomain klase da se "nakacis" na proces ucitavanja assemblija i da odradis svoje ucitavanje ako sam .NET ne moze da locira tvoj DLL (sto ce ovde biti slucaj).

problem je u stvari druge vrste, resursi su isto toliko "vidljivi" koliko i file sistem (u neku ruku resursi i JESU primitivan file sistem ugradjen u sam executable). Nema zastite, svako ko ima bilo kakav resource editor moze da izvuce nazad tvoj DLL fajl, a onaj koji to ne ume ionako nece znati sta da radi sa tvojim DLLom na samom disku
Toplo preporucujem da potrazis neko drugo resenje.
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

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 13:52 - pre 207 meseci
Koji bi onda bio dobar nacin da neko neovlasceno koristi .dll?
Recimo, napravim class library koji koristim u svojoj aplikaciji i distribuiram ga sa njom. Kako spreciti da neko uzme taj .dll i koristi ga u nekoj svojoj aplikaciji?
 
Odgovor na temu

Gosovic
Sasa Gosovic
Beograd

Član broj: 24224
Poruke: 68
*.dynamic.sbb.co.yu.



Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 14:23 - pre 207 meseci
Pogresno sam protumacen. Nije mi bitna bezbednost, niti da li ce neko da koristi moje dll-ove. Ionako u njima stoje stvari koje nisu preterano upotrebljive same za sebe. Nego hocu da prilikom distribucije programa imam samo exe, da ne vucem gomilu fajlova uz njega. Zato mi i treba neki sistem kako bi mogao da ugradim dll-ove u exe i da odatle mogu da se koriste. Jel ima nesto lakse sem linkovanja i onoga gore navedenog?
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 15:37 - pre 207 meseci
Nema veze, mene i dalje interesuje ono sto sam pitao ;)

Inace, onaj program koji je preporucio negyxo mi deluje kao prilicno jednostavno resenje.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 19:02 - pre 207 meseci
Citat:
Shadowed: Koji bi onda bio dobar nacin da neko neovlasceno koristi .dll?
Recimo, napravim class library koji koristim u svojoj aplikaciji i distribuiram ga sa njom. Kako spreciti da neko uzme taj .dll i koristi ga u nekoj svojoj aplikaciji?


Prakticno nikako. Ti mozes da uradis code-signing i enkripciju, ali to negde mora da se dekriptuje u tvojoj aplikaciji, i tu je slaba tacka zastite (ako pribavim kljuc, mogu da uradim once-off dekripciju i ukradem dll. Cak i obfuskacija relativno sakriva implementaciju, ali samo do nivoa non-public elemenata, zbog prirode CLS metadata public elementi se ne mogu sakriti pa je opet prakticno izvodljivo procesom eliminacije skinuti bilo kakvu zastitu sa samog DLL-a, narocito ako koristi enkripcijske klase frameworka.

Alternativno, mozes kljuc za enkripciju da stavis na neki dongle, ali to opet moze da se skine kroz debager ako "pozajmim" i dongle, to stiti samo od prikrivene kradje softvera kad ne mozes uzeti i dongle uz program. Ako imas pristup svim elementima, .NET applikacije su za klasu lakse za razbijanje od C++/asm.


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

Gosovic
Sasa Gosovic
Beograd

Član broj: 24224
Poruke: 68
*.dynamic.sbb.co.yu.



Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl09.04.2007. u 20:12 - pre 207 meseci
Skinuo sam ILMerge i uspeo sam da spojim dll i exe ali aplikacija radi do trenutka kad zatreba kontrola iz dll-a. Izbaci gresku "Could not load file or assembly ...". Ovako isto bude i kad dodam dll u resouces. Jel treba nesto u kodu da se ukuca kako bi program znao da trazi dll u exe-u?? Inace, dll sam dodao preko References.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl10.04.2007. u 09:21 - pre 207 meseci
Ne znam u cemu je problem. ILMerge je poprilicno prost za rukovanje. Sve sto trebas da uradis je da kompajliras program i ostale dll-ove na koje se kacis. Kada to uradis, ostaje ti da u onom output direktorijumu sve mergujes sa ILMerge. Proveri da li sve radi pre nego sto mergujes.
 
Odgovor na temu

bunker
Srđan Savković
Smederevo

Član broj: 4495
Poruke: 239
212.5.210.*



Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl10.04.2007. u 10:55 - pre 207 meseci
Dll mozes da dodas kao embeded resource u exew fajl. U runtime-u, kao sto je mmx rekao mozes da koristis AppDomain.AssemblyResolve event, koji se ispaljuje kad framework ne moze da pronadje odredjeni dll u radnom direktorijumu aplikacije ili u GAC-u.
Hvatanjem tog eventa mozes da ucitas svoj assembly iz Assembly.GetExecutingAssembly().GetManifestResourceStream()... (nadam se da nisam pogresio, pisem napamet). Kad pokupis ManifestResourceStream, mozes da upotrebis megod Assembly.Load(Stream) i vratis ucitani dll. AssemblyResolve delegat ima povratnu vrednost i to je dll koji si ucitao ili nisi. Ako vrati null, dobicces exception. Nadam se da ovo nije previse konfuzno opisano.

De ne bi bilo napamet evo malo koda:
Code:

        static void Main()
        {
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("WindowsApplication3.res.ClassLibrary1.dll");
            int len = (int)stream.Length;
            byte[] bytes = new byte[len];
            stream.Read(bytes, 0, len);
            return Assembly.Load(bytes);
        }


kad pozoves sledeccu liniju, desicce se CurrentDomain_AssemblyResolve (ovo samo u slucaju da u radnom folderu nemas trazeni dll):
Code:

ClassLibrary1.Person p = new ClassLibrary1.Person();
Console.WriteLine(p.Name);


Pazi, "WindowsApplication3.res.ClassLibrary1.dll" je dll koji sam dodao kao "Embeded Resource". Nisam ga uzeo iz radnog foldera u koji ga je studio strpao, vecc sam ga iskopirao u drugi folder, iz kog sam da oznacio kao Embeded.
Nije me mrzelo, pa sam napravio neku pilot aplikaciju, koja radi taj posao. Izvini sto se nisam vezao za ILMerge, ali ja to duze vreme radim ovako.

Nije važno stići prvi. Važno je prvo da stigneš.
Prikačeni fajlovi
 
Odgovor na temu

Gosovic
Sasa Gosovic
Beograd

Član broj: 24224
Poruke: 68
*.dynamic.sbb.co.yu.



Profil

icon Re: Ugradjivanje DLL-ova u EXE fajl10.04.2007. u 22:33 - pre 207 meseci
Ma kakav ILMerge, ovo radi odlicno. Cak sam i dodao da program sam uzima dll fajlove koji mu trebaju, da bi mogao da natrpam vise dll-ova u exe.
 
Odgovor na temu

[es] :: .NET :: Ugradjivanje DLL-ova u EXE fajl

[ Pregleda: 3214 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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