Skocz do zawartości
Marcin S

Struktura DLL'a i jej modyfikacja

Rekomendowane odpowiedzi

Witam

 

Muszę poznać strukturę i metodę tworzenia dll'a - chodzi tu już o

skompilowaną bibliotekę, bo do takiej binarki muszę dorzucić podpis

cyfrowy.

Zatem czy znacie odpowiedź na mój problem lub gdzie można znaleźć informacje o tablicy i sekcjach dll oraz możliwości dodania (np 2KB) dodatkowych danych?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam

 

Muszę poznać strukturę i metodę tworzenia dll'a - chodzi tu już o

skompilowaną bibliotekę, bo do takiej binarki muszę dorzucić podpis

cyfrowy.

Zatem czy znacie odpowiedź na mój problem lub gdzie można znaleźć informacje o tablicy i sekcjach dll oraz możliwości dodania (np 2KB) dodatkowych danych?

co to znaczy "musze dorzucic podpis cyfrowy"?

dll to biblioteka, jakis kod "zakapsulowany" w klasie, klasa ta ma jakies metody publiczne, ktorych mozesz uzywac, nie musisz i nie mozesz znac kodu z dllki i kodu tych publicznych metod, czyli w jaki sposob one dzialaja, masz specyfikacje - co pobieraja i co zwracaja i to wszsytko co bedziesz wiedzial, to w duzym sktocie o dll, zalezy jeszcze w czym ta dllka byla pisana, bo naprzyklad stworzone stworzone pod dontNET framework sa kompilowane do intermediate language i tu sa juz mozliwosci dostania sie do kodu - m$ poszedl odziwo w strone open source, sprecyzuj o co Ci chodzi to moze bede w stanie pomoc

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jest projekt, ktory oparty jest na uwierzytelnianiu i certyfikatach

kolega mnie prosił, aby się zorientował jak dodać do dll podpis, który będzie weryfikowany przez odpoweidnie oprogramowanie po stronie klienta... pisane sa w c++builderze pod system win2k

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

z tego co wiem, nie ma czegos takiego jak uniwersalny certyfikat dla dll, nie ma jakiegos supportu dla takich funkcji ze strony m$, ale ja bym to zrobil tak, ze implementujac taka dllke, kazda publiczna metoda wymagalaby jakiegos rodzaju klucza, to bylby ten certyfikat, nie wiem jakie sa wymagania klienta co do tego projektu, musialbys podac wiecej danych, dalej nie wiem tez po co Ci ten certyfikat, czy chodzi o to zeby tylko uprawiony klient mogl uzywac dllki, czy moze jest to jakiegos rodzaju uwierzytelnianie danych?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

sam nie jestem na 100% pewny, bo dostałem takie hasło...

zaszywamy u klienta klucz publiczny, który bedzie weryfikował dll'ki dostarczone jakąs drogą do niego. dll'ka jest to normalny dll, ale właśnie tak zmodyfikowany, że będzie informacja silnie poświadczająca o autentyczności biblioteki. nie pytaj mnie o więcej, bo sam niestety nie wiem. ja mam tylko ten kawałek projektu, bo się reszta nie wyrabia ;)

całość to chyba coś podobnego do podpisywania kontrolki activeX, tylko że tutaj dostarczane byłyby dlle

 

z tego co wyczytałem, a później zacząłem sprawdzać, to prawdopodobnie jest możliwe dodanie po prostu na sam koniec pliku (oczywiście powiększająć go) danych bez niszczenia funkcjonalności biblioteki. tym bardziej, że bajty odpoweidzielne za sumę kontrolną mogą być ustawione na 0 i będzie działało...

na razie sprawdzałem to na dll do mirandy ;) więc możliwe było by obliczenia hasha, wygenerowanie podpisu i dodanie go na koniec pliku.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

z tego co wyczytałem, a później zacząłem sprawdzać, to prawdopodobnie jest możliwe dodanie po prostu na sam koniec pliku (oczywiście powiększająć go) danych bez niszczenia funkcjonalności biblioteki. tym bardziej, że bajty odpoweidzielne za sumę kontrolną mogą być ustawione na 0 i będzie działało...

na razie sprawdzałem to na dll do mirandy ;) więc możliwe było by obliczenia hasha, wygenerowanie podpisu i dodanie go na koniec pliku.

takie cos to bedzie fuszerka :] no ale jezeli to wystarczy to "its up to u", ja bym to zrobil, jak pisalem wczesniej, odpowiednio przygotowana dllka, ktora sprawdza klucz dostarczany przez klienta, gorzej jezeli klient musi wiedziec czy dllka jest "certyfikowana" zanim wywola jakakolwiek metode, wtedy to juz pozostaje chyba to co ty pisales, no albo jest jeszcze drugie wyjscie :) dllki pisane pod dotNET framework moga miec "strong name", czyli sa unikatowe - nie ma problemu dll hell :] wiec dllka ze strong name, ma juz wygenerowany unikatowy "public token", token ten jest generowany przy pomocy klucza, mozna miec wiele kluczy i wtedy token bedzie rozny dla roznych dllek, ale jezeli bedziesz korzystal z tego samego klucza do podpisywania dllek to token bedzie ten sam - inna bedzie za to wersja kompilacji w przypadku tych samych dllek, wiec mozna wtedy potraktowac ten token jako certyfikat, zakladamy sobie ze w obrebie tego projektu uzywamy jednego klucza, a klientowi musimy dostarczyc tylko nasz unikatowy token, i mamy certyfikowane dllki :] tyle ze ty pisales cos o builderze, wiec ten pomysl raczej sie nie sprawdzi, chyba ze mozecie zmienic srodowisko

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...