Ładowanie DLL z sieci

Odpowiedz Nowy wątek
2010-04-15 20:53
proqix polaczeq
0

Nie wiem czy ktoś kiedyś próbował czegoś takiego jak ładowanie pliku DLL z servera zdalnego np:
http://127.0.0.1/plil.dll

Czy w ogóle jest taka możliwość bo takie coś ni niestety nie działa...

var
  DLL : THandle;
  About : procedure;
begin
  DLL := LoadLibrary('http://localhost/SimpleDLL.dll'); // załadowanie pliku
  try
    @About := GetProcAddress(DLL, 'About');  // pobranie wskaźnika do procedury
    if @About = nil then raise Exception.Create('Nie można załadować procedury');
    About; // wykonanie procedury
  finally
    FreeLibrary(DLL);
  end;

Pozostało 580 znaków

2010-04-15 21:31
dfs42
0

moze byc to tylko lokalna sciezka, system tylko uzupelnia ja by byla to poprawna nazwa obiektu (file).

Pozostało 580 znaków

2010-04-16 00:20
0

ściągnij i zapisz do tempa


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2010-04-16 17:30
proqix polaczeq
0

szkoda że się nie da ładować prosto z sieci :(

Pozostało 580 znaków

2010-04-16 17:39
Świętowit
0

W kwestii formalnej - kiedyś się dało, mało tego, poprzez tablicę importów. Bardzo dobrze, że się nie da - piękny sposób ukrywania/rozpowszechniania/aktualizowania malware'u.

Pozostało 580 znaków

2010-04-16 20:52
0

A z innej beczki, czy da się załadować ze strumienia (TStream) ? Pewnie się nie, w zasadzie napisałem bo ostatnio bawiłem się hunspell'em, i trochę mnie nerwuje, że trzeba wczytywać słownik podając scieżkę (a to jest prawie 5 Mb), robiąc to w głównym wątku jest lekka przymułka. Fajnie by było jak podać jakąś taką spreparowaną ścieżkę która by w rzeczywistości była obszarem pamięci. A może pliki mapowane ?

Reasumując, czy funkcję która przyjmuje nazwę pliku można jakoś oszukać żeby jej podsunąć jakiegoś stream'a albo coś w ten deseń ?

b

Pozostało 580 znaków

2010-04-16 22:14
0

W Delphi 7 da się wczytać dllkę z zasobów czyli jak z TResourceStreama to i innego Streama
powinno się dać. Zajrzyj na tę stronę i wykorzystaj moduł dllloader.pas. Znalazłem go dzięki
pomocy na forum u1. Użyłem go w kilku aplikacjach: do obsługi bass.dll z zasobów, a także:
do załądowania sqlite3.dll również z zasobów. Działa idealnie, a nie jak btmemorymodule :)
http://www.basegraph.com/bg/tutorials/eng_tutor_dlltools/dlltools.html


Pozostało 580 znaków

2010-04-17 00:44
0

Uhm, w sumie nie tyle chodzi mi o dll'kę, bo ta ma 200kb, tylko o słownik który ma 5 Mb. Na ten moment trzymam wszystko w bazie, i jak jest potrzeba to sprawdzam czy rozmiar jest ten sam a jak nie jest albo pliku nie ma to go zapisuje na dysk. Następnie z dysku go wczytuje. Chciałbym to zamiast na dysk zapisać do strumienia, i ze strumienia wczytać. Albo do czegoś na ten wzór. Nie chce mi się przerabiać tego ładowania na wątek, zresztą kto wie jakie problemy by się znowu pojawiły. Dlatego przy okazji tego tematu zapytałem.

b

Pozostało 580 znaków

2010-04-18 22:25
proqix polaczeq
0

szkoda że się tak nie da :(

Pozostało 580 znaków

2010-04-18 23:36
0

Wiem, że można było ciągnąć DLL z sieci, ale teraz w nowych D się raczej nie da. Tak zabezpieczano niektóre programy przed piractwem!

Pozostało 580 znaków

2010-04-18 23:39
Świętowit
0
ccpl napisał(a)

Wiem, że można było ciągnąć DLL z sieci, ale teraz w nowych D się raczej nie da.

Czego się niby nie da?

ccpl napisał(a)

Tak zabezpieczano niektóre programy przed piractwem!

I już się tak nie robi bo to sensu nigdy nie miało...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0