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

Enumerisanje eksportovanih funkcija iz nekog dll-a

[es] :: Pascal / Delphi / Kylix :: Enumerisanje eksportovanih funkcija iz nekog dll-a

[ Pregleda: 2936 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Enumerisanje eksportovanih funkcija iz nekog dll-a15.06.2005. u 06:33 - pre 229 meseci
Treba da napisem program koji ce enumerisati sve eksportovane funkcije u nekom dll-u. Kako to uraditi ?
Postoji li neka unapred konstruisana klasa koja omogucava lako baratanje headerima dll fajla, ili moram rucno da trazim offset na kome pocinje export section, itd... ?

thx
 
Odgovor na temu

DelphiBoy

Član broj: 47300
Poruke: 28
213.244.200.*



Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a15.06.2005. u 09:31 - pre 229 meseci
Ne treba ti nikakva klasa, vec samo ova funkcija koja cita podatke mapirane u memoriji...
Code:
uses
  ImageHlp;

procedure ListDLLExports(const FileName: string; List: TStrings);
type
  TDWordArray = array [0..$FFFFF] of DWORD;
var
  imageinfo: LoadedImage;
  pExportDirectory: PImageExportDirectory;
  dirsize: Cardinal;
  pDummy: PImageSectionHeader;
  i: Cardinal;
  pNameRVAs: ^TDWordArray;
  Name: string;
begin
  List.Clear;
  if MapAndLoad(PChar(FileName), nil, @imageinfo, True, True) then
  begin
    try
      pExportDirectory := ImageDirectoryEntryToData(imageinfo.MappedAddress,
        False, IMAGE_DIRECTORY_ENTRY_EXPORT, dirsize);
      if (pExportDirectory <> nil) then
      begin
        pNameRVAs := ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
          DWORD(pExportDirectory^.AddressOfNames), pDummy);
        for i := 0 to pExportDirectory^.NumberOfNames - 1 do
        begin
          Name := PChar(ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
            pNameRVAs^[i], pDummy));
          List.Add(Name);
        end;
      end;
    finally
      UnMapAndLoad(@imageinfo);
    end;
  end;
end;


Nadam se da ti je pomogla.
Pozdrav!
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a16.06.2005. u 06:19 - pre 229 meseci
Hmz, jer si siguran da ovo radi ? Naizgled bi trebalo da radi koliko vidim, ali prilikom prvog pozivanja ImageRvaToVa(), program crashuje... Isprobano na XP SP1, Delphi 7...
 
Odgovor na temu

DelphiBoy

Član broj: 47300
Poruke: 28
213.244.200.*



Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a16.06.2005. u 08:24 - pre 229 meseci
Kod mene radi bez problema, mada ja koristim XP SP1 i Delphi6... Je si li siguran da program iskace bas na pointeru?
 
Odgovor na temu

DelphiBoy

Član broj: 47300
Poruke: 28
213.244.200.*



Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a16.06.2005. u 09:05 - pre 229 meseci
Da li si naveo IMAGEHLP u uses listi. Mozes li mi poslati tekst koji ti kompajler prijavljuje o gresci? Za svaki slucaj ja ti saljem programcic sa sorsom, pa ga ti proveri kod sebe.

Pozdrav!
Prikačeni fajlovi
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a16.06.2005. u 19:20 - pre 229 meseci
Ne radi ni ovaj source koji si mi dao. Evo screenshota greske, sad pukne na drugom pozivanju ImageRvaToVa() fje. Prvo pozivanje prodje i vrati neki rezultat u pNameRVAs, nadam se da je dobar.

http://reiser.xcoderz.org/error.jpg
 
Odgovor na temu

DelphiBoy

Član broj: 47300
Poruke: 28
213.244.200.*



Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a17.06.2005. u 09:10 - pre 229 meseci
Izvini za program koji sam ti poslao, jer sam ga kompajlirao bez dodatnih paketa (samo sa vcl) pa verovatno pravi problem... Zip fajl je malo veci (320 KB) i ne mogu da ti ga poshaljem preko ovog foruma :-(
Probacu na mejl ako si ga ostavio u profilu.

Sto se tice greske, stvarno mi nije jasno zashto pravi izuzetak... Ovaj API potice iz sistemskog fajla IMAGEHLP.dll koji se nalazi i na 98-ci i na NT sistemima.
 
Odgovor na temu

DelphiBoy

Član broj: 47300
Poruke: 28
213.244.200.*



Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a17.06.2005. u 09:27 - pre 229 meseci
Probao sam da ti posaljem program na mejl [email protected] ali bez uspeha. Imas li neku drugu adresu?
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a17.06.2005. u 13:52 - pre 229 meseci
[email protected] nije mail adresa :>
Salji na [email protected]. Mada mene zanima zasto nece da radi kad se iskompajira kod mene...
 
Odgovor na temu

DelphiBoy

Član broj: 47300
Poruke: 28
213.244.200.*



Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a17.06.2005. u 14:15 - pre 229 meseci
E, ovo nije moguce... Izgleda da gmail odbija svu postu sto sadrzi exe fajlove, cak i kada su u arhivi! Zanima me da li ce ovaj primer da radi kod tebe na masini, da bi smo raskrstili da li je do Delphi-ja ili do samog XP-a.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
193.251.169.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a17.06.2005. u 16:04 - pre 229 meseci
polu-offtopic, iliti korisni offtopic:
@reiser: sto si cenzurisao taskbar? :D

@DelphiBoy: mozes da prevaris gmail: zapakuj kao zip pa mu stavi 4-5 ekstenzija (npr. arhiva.ZIP.txt.exe.xls.smor) <- obicno ekstenzija koja je velikim slovima napisana predstavlja pravu ekstenziju ;)
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a17.06.2005. u 18:32 - pre 229 meseci
Ma samo promeni extenziju u .bin i shibni :>
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Enumerisanje eksportovanih funkcija iz nekog dll-a18.06.2005. u 02:48 - pre 229 meseci
OK, resio sam problem, ne mora da saljes nista, thx :>
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Enumerisanje eksportovanih funkcija iz nekog dll-a

[ Pregleda: 2936 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

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