Conteudo de DLL
Caros amigos,
Como posso fazer para listar as funções de uma DLL?
Como posso fazer para listar as funções de uma DLL?
Emiliano
Curtidas 0
Respostas
Sanses
14/03/2005
Faça assim:
Até, Sanses
uses ImageHlp, StdCtrls 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; procedure TForm1.Button1Click(Sender: TObject); var List: TStrings; i: Integer; s: string; begin List := TStringList.Create; try //AQUI VOCÊ ESPECIFICA O NOME DA DLL ListDLLExports(´C:\minhadll.dll´, List); ShowMessage(IntToStr(list.Count) + ´ functions in dll´); s := ´List of functions:´; for i := 0 to List.Count - 1 do s := s + 1310 + List[i]; ShowMessage(S); finally List.Free end; end;
Até, Sanses
GOSTEI 0