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

Kako upakovati dll file u exe i tako ga koristiti?

[es] :: C/C++ programiranje :: Kako upakovati dll file u exe i tako ga koristiti?

[ Pregleda: 3374 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BinaryRuler

Član broj: 73518
Poruke: 189
79.101.148.*



+3 Profil

icon Kako upakovati dll file u exe i tako ga koristiti?02.06.2008. u 21:45 - pre 192 meseci
Na koji nacin mogu da ugradim dll file u exe?
Mozda da se ubaci u resource ili na neki drugi nacin?
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.114.*



+7 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?03.06.2008. u 00:41 - pre 192 meseci
Mozes preko resursa.
Da bi je procitao iz resursa i snimio na HD pozovi sledece win api fn (tim redom). Normalno , prvo proctaj kako se koriste ...
GetModuleHandle(ako nemas handler),FindResource,LoadResource,LockResource,SizeofResource,CreateFile,WriteFile,CloseHandle(fajla).

 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.ADSL.neobee.net.



+3 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?03.06.2008. u 07:18 - pre 192 meseci
Ok, hvala na odgovoru, ali mene interesuje kako da koristim dll direktno bez snimanja na HDD?
 
Odgovor na temu

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
147.91.197.*

Sajt: www.nsc.ba


+4 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?03.06.2008. u 08:54 - pre 192 meseci
Da li zelis da tvoj program samo nosi u sebi daj dll ili mu je on sastavni dio runtime-a?

Ako ne moze da radi bez njega, onda vidi Thinstall. A ako samo nosi u sebi, onda kao sto ti je vec preporuceno, strpaj ga u resource...
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-1.sezampro.yu.



+395 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?03.06.2008. u 08:55 - pre 192 meseci
Pogledaj ovde : http://www.joachim-bauch.de/tutorials/load_dll_memory.html
Imao sam slicnu situaciju da sam morao da snimim na HD pa onda da ucitam module koje raspakujem iz exe-a
Ova biblioteka cita DLL iz samog EXE bez snimanja na HD ...

Viva lollapalooza
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.113.*



+7 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?04.06.2008. u 00:20 - pre 192 meseci
Citat:
deerbeer: Pogledaj ovde : http://www.joachim-bauch.de/tutorials/load_dll_memory.html
Imao sam slicnu situaciju da sam morao da snimim na HD pa onda da ucitam module koje raspakujem iz exe-a
Ova biblioteka cita DLL iz samog EXE bez snimanja na HD ...

Ovo sam ja koristio u jednom poslu ... trebalo je da se pokrene fajl zapisan u nizu (char*) u source fajlu ...
U principu dobar kod , mada ... daleko od toga da ces moci komotno da pozivas funkcije iz dll-a u formatu funkcija(char* ovo,int ono);
Kod ima jednu fn koja se zove, cini mi se, MemoryGetProcAddres kojom mozes da nadjes adresu procedure a posle bi najbolje bilo da koristis inline assembler (ako je VC++) tako sto argumente funkcije obrnutim redom (sa desna na levo) guras u stack i onda pozivas fn. Nesto kao
Code:

__asm{
   push arg2
   push arg1
   call fn
   mov rezultat, eax // povratna vrednost je u eax registru
}

 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.ADSL.neobee.net.



+3 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?05.06.2008. u 08:04 - pre 192 meseci
Uff, probacu.

Ako ima jos predloga pisite.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?05.06.2008. u 09:00 - pre 192 meseci
Citat:
Eurora3D Team: Ovo sam ja koristio u jednom poslu ... trebalo je da se pokrene fajl zapisan u nizu (char*) u source fajlu ...
U principu dobar kod , mada ... daleko od toga da ces moci komotno da pozivas funkcije iz dll-a u formatu funkcija(char* ovo,int ono);
Kod ima jednu fn koja se zove, cini mi se, MemoryGetProcAddres kojom mozes da nadjes adresu procedure a posle bi najbolje bilo da koristis inline assembler (ako je VC++) tako sto argumente funkcije obrnutim redom (sa desna na levo) guras u stack i onda pozivas fn. Nesto kao
Code:

__asm{
   push arg2
   push arg1
   call fn
   mov rezultat, eax // povratna vrednost je u eax registru
}


Hvala za __asm al nisam jos dotle stigao ..
Probao sam sa MemoryLoadLibrary i ne ide :(

Code:
 
HMEMORYMODULE hModule = MemoryLoadLibrary((const void*)szBuffer) ;


BuildImportTable() funkcija u MemoryLoadLibrary vraca FALSE ...
I cini mi se da je ovde negde problem

Code:
 
for (; !IsBadReadPtr(importDesc, sizeof(IMAGE_IMPORT_DESCRIPTOR)) && importDesc->Name; importDesc++)
{
DWORD *thunkRef, *funcRef;
HMODULE handle = LoadLibrary((LPCTSTR)(codeBase + importDesc->Name)); //222 linija 

//handle je posle ovog poziva NULL  
//a u debugerru "codeBase + importDesc->Name" je KERNEL32.dll
}


module->modules[module->numModules++] = handle;
if (importDesc->OriginalFirstThunk)
{
  thunkRef = (DWORD *)(codeBase + importDesc->OriginalFirstThunk);
  funcRef = (DWORD *)(codeBase + importDesc->FirstThunk);
} else {
   // no hint table
   thunkRef = (DWORD *)(codeBase + importDesc->FirstThunk);
   funcRef = (DWORD *)(codeBase + importDesc->FirstThunk);
}

for (; *thunkRef; thunkRef++, funcRef++)
{
   if IMAGE_SNAP_BY_ORDINAL(*thunkRef)
     *funcRef = (DWORD)GetProcAddress(handle, (LPCSTR)IMAGE_ORDINAL(*thunkRef));  // 251 warning message 
   else {
       PIMAGE_IMPORT_BY_NAME thunkData = (PIMAGE_IMPORT_BY_NAME)(codeBase + *thunkRef);
       *funcRef = (DWORD)GetProcAddress(handle, (LPCSTR)&thunkData->Name);  //254 warning message 
   }
   if (*funcRef == 0)
    {
      result = 0;
      break;
     }
}

return result ; 


Ovde je *funcRef == 0 i BuildImportTable vraca result = 0

Zanimljive poruke koje dobijam u output prozoru sa compiler warning porukama:
1>.\core\MemoryModule.cpp(251) : warning C4311: 'type cast' : pointer truncation from 'FARPROC' to 'DWORD'
1>.\core\MemoryModule.cpp(254) : warning C4311: 'type cast' : pointer truncation from 'FARPROC' to 'DWORD'

i pored pragma direktive :
// disable warnings about pointer <-> DWORD conversions
#pragma warning( disable : 4311 4312 )

Da napomenem :
Pre nego sto probam da otvorim DLL iz buffer-a pre toga ga snimim u fajl i ucitam ga sa LoadLibrary i radi normalno ...



[Ovu poruku je menjao deerbeer dana 05.06.2008. u 12:44 GMT+1]
Viva lollapalooza
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.113.*



+7 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?06.06.2008. u 00:21 - pre 192 meseci
Nisam video da ste pisali od proslog puta ...
Radi sigurno , pogledacu kod mene...
Secam se da sam te fajlove preradio da moze da ucita i exe (ustvari dll sam mislim i izbacio :) jer mi je trebao exe)
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
77.46.183.*



+3 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?08.06.2008. u 21:41 - pre 192 meseci
Eurora3D ajde postuj kod ako mozes.
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.114.*



+7 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?09.06.2008. u 21:24 - pre 192 meseci
Mogu ... bilo i obrisano

[Ovu poruku je menjao Eurora3D Team dana 10.06.2008. u 16:17 GMT+1]
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.ADSL.neobee.net.



+3 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?10.06.2008. u 07:13 - pre 192 meseci
Hvala na upload-u
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.ptt.yu.



+395 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?10.06.2008. u 10:30 - pre 192 meseci
@Eurora3D
Hvala puno ... evo mozes sad da skines sa sajta kod da te ne juri joachim :) :)
Probacu pa cu javiti rezultate ....


Viva lollapalooza
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.112.*



+7 Profil

icon Re: Kako upakovati dll file u exe i tako ga koristiti?11.06.2008. u 01:27 - pre 192 meseci
Ma nista ... dodjete mi neki kod kad meni bude trebalo :)
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako upakovati dll file u exe i tako ga koristiti?

[ Pregleda: 3374 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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