Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
DLL içindeki Fonksiyonları Listeleme
#1
Dinamy Link Libary (dll) içindeki fonksiyonları listeleme örneği 

procedure DllListFunctions(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;

Kullanımı : 
List: TStrings;
i: Integer;
s: string;
begin
List := TStringList.Create;
try
ListDLLExports('Ornek_DLL.dll', List);
ShowMessage(IntToStr(list.Count) + ' Fonksiyon Sayısı');
s := 'Fonksiyon Listesi :';
for i := 0 to List.Count - 1 do
Memo1.Lines.Add(List[i]);
finally
List.Free
end;
- Namyelus
WWW
Cevapla
#2
(04-02-2018, Saat: 17:30)dicle_gsm Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlDinamy Link Libary (dll) içindeki fonksiyonları listeleme örneği 

procedure DllListFunctions(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;

Kullanımı : 
List: TStrings;
i: Integer;
s: string;
begin
List := TStringList.Create;
try
ListDLLExports('Ornek_DLL.dll', List);
ShowMessage(IntToStr(list.Count) + ' Fonksiyon Sayısı');
s := 'Fonksiyon Listesi :';
for i := 0 to List.Count - 1 do
Memo1.Lines.Add(List[i]);
finally
List.Free
end;

Bu fonksiyonları kullanmak için hangi sınıflara ihtiyaç var onlarıda yazarsan iyi olur
mesala kod içinde belirtilen
LoadedImage, MapAndLoad, ImageDirectoryEntryToData, ImageRvaToVa, UnMapAndLoad
sınıfları neyin içinde  Wink
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#3
(04-02-2018, Saat: 17:58)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBu fonksiyonları kullanmak için hangi sınıflara ihtiyaç var onlarıda yazarsan iyi olur
mesala kod içinde belirtilen
LoadedImage, MapAndLoad, ImageDirectoryEntryToData, ImageRvaToVa, UnMapAndLoad
sınıfları neyin içinde  Wink

Kusura bakmayın yazmayı unutmuşum, 
Hepsi Windowsdaki ImageHlp Apisi içerisinde
- Namyelus
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Resim listeleme Dostk 9 391 31-07-2017, Saat: 10:16
Son Yorum: Tuğrul HELVACI
  VLC Player Fonksiyonları Lord_Ares 2 490 29-01-2017, Saat: 23:21
Son Yorum: Lord_Ares
  adoquery dbgrid içindeki datalara if else ile kontrol ettirmek emrekilinc1984 6 1.287 05-11-2016, Saat: 17:08
Son Yorum: emrekilinc1984
  adoquery dbgrid içindeki datalara if else ile kontrol ettirmek emrekilinc1984 5 1.600 01-11-2016, Saat: 16:58
Son Yorum: CaglarCoskun
  Seçilen tüm kayıtları listeleme... hido 2 1.189 01-10-2016, Saat: 10:39
Son Yorum: esistem



Konuyu Okuyanlar: 1 Ziyaretçi