⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 查看Dll裡的API
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ImageHlp;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
type
  TDWordArray = array [0..$FFFFF] of DWORD;
var
  imageinfo: LoadedImage;
  pExportDirectory: PImageExportDirectory;
  dirsize: Cardinal;
  pDummy: PImageSectionHeader;
  i: Cardinal;
  pNameRVAs, pAddressRVAs: ^TDWordArray;
  Name: string;
  MItem : TListItem;
begin
  //List.Clear;
  if MapAndLoad(PChar('C:\WINDOWSP\SYSTEM32\Kernel32.dll'), 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);
        pAddressRVAs := ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
          DWORD(pExportDirectory.AddressOfFunctions), pDummy);
        for i := 0 to pExportDirectory^.NumberOfNames - 1 do
        begin
          //Name := ;
          MItem := ListView1.Items.Add;
          MItem.Caption := IntToStr(i);
          MItem.SubItems.Add(PChar(ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
            pNameRVAs^[i], pDummy)));
          MItem.SubItems.Add(Format('%p',[Pointer(imageinfo.MappedAddress+pAddressRVAs^[i])]));
          //List.Add(Name);
        end;
      end; 
    finally 
      UnMapAndLoad(@imageinfo);
    end;
  end;
  ListView1.Column[0].Width := 60;
  ListView1.Column[1].Width := 300;
  ListView1.Column[2].Width := 100;
end;


procedure TForm1.Button2Click(Sender: TObject);
var aHandle : Cardinal;
    p : Pointer;
begin
   aHandle := LoadLibrary(PChar('C:\WINDOWSP\SYSTEM32\Kernel32.dll'));
   p := GetProcAddress(aHandle, 'AddAtomA');
   ShowMessage(format('%p',[p]));
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -