📄 derectories.pas
字号:
{******************************************************************************}
{Copyright(C) 2007,Pefine Security Lab }
{All rights reserved. }
{ }
{Abstract:View Win32 PE file information. }
{ }
{Version:1.01 }
{Author:WindRand }
{Date:2007-01-20 }
{******************************************************************************}
unit Derectories;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, JwaWinNT, PublicUnit, ExtCtrls;
type
TDirectoryFrm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
D1Edit: TEdit;
D2Edit: TEdit;
D3Edit: TEdit;
D4Edit: TEdit;
D5Edit: TEdit;
D6Edit: TEdit;
D7Edit: TEdit;
D8Edit: TEdit;
D9Edit: TEdit;
D10Edit: TEdit;
D11Edit: TEdit;
D12Edit: TEdit;
D13Edit: TEdit;
D14Edit: TEdit;
D15Edit: TEdit;
D16Edit: TEdit;
S1Edit: TEdit;
S2Edit: TEdit;
S3Edit: TEdit;
S4Edit: TEdit;
S5Edit: TEdit;
S6Edit: TEdit;
S7Edit: TEdit;
S8Edit: TEdit;
S9Edit: TEdit;
S10Edit: TEdit;
S11Edit: TEdit;
S12Edit: TEdit;
S13Edit: TEdit;
S14Edit: TEdit;
S15Edit: TEdit;
S16Edit: TEdit;
SubMBtn: TButton;
Button3: TButton;
Button4: TButton;
Button8: TButton;
Panel1: TPanel;
Button1: TButton;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure SubMBtnClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
procedure FreeHandle(hFile,mFile:Thandle);
public
{ Public declarations }
end;
var
DirectoryFrm: TDirectoryFrm;
implementation
uses ExportTable, Main, ImportTable, Resource, PeTls;
{$R *.dfm}
procedure TDirectoryFrm.FormShow(Sender: TObject);
begin
With DirectoryFrm do //界面居中
begin
Left:=(Screen.Width div 2)-(Width div 2);
Top:=(Screen.Height div 2)-(Height div 2);
end;
end;
procedure TDirectoryFrm.FreeHandle(hFile,mFile:Thandle);
begin
CloseHandle(hFile);
CloseHandle(mFile);
end;
procedure TDirectoryFrm.FormCreate(Sender: TObject);
var
FileNameStr:String;
ImageDosHeader:PIMAGEDOSHEADER;
ImageNTHeaders:PIMAGENTHEADERS;
hFile,mFile:THandle;
hView:Pointer;
vBase:LongWord;
begin
FileNameStr:=MainFrm.PublicFileNameStr;
hFile:=CreateFile(PChar(FileNameStr),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if hFile=INVALID_HANDLE_VALUE then
begin
MessageBox(Handle,'Open file error!','Information',MB_OK+MB_ICONERROR);
CloseHandle(hFile);
Exit;
end;
mFile:=CreateFileMapping(hFile,nil,PAGE_READONLY,0,0,nil);
if mFile=0 then
begin
MessageBox(Handle,'Cannot open the file for memory mapping!','Information',MB_OK+MB_ICONERROR);
CloseHandle(hFile);
Exit;
end;
hView:=MapViewOfFile(mFile,FILE_MAP_READ,0,0,0);
if hView=nil then
begin
MessageBox(Handle,'Cannot map the file into memory!','Information',MB_OK+MB_ICONERROR);
FreeHandle(hFile,mFile);
Exit;
end;
ImageDosHeader:=PImageDosHeader(hView);
if ImageDosHeader.e_magic<>IMAGE_DOS_SIGNATURE then
begin
MessageBox(Handle,'This file is not a valid PE!','Information',MB_OK+MB_ICONERROR);
FreeHandle(hFile,mFile);
Exit;
end;
vBase:=LongWord(ImageDosHeader);
ImageNTHeaders:=PIMAGENTHEADERS(vBase+LongWord(ImageDosHeader.e_lfanew));
if ImageNTHeaders.Signature<>IMAGE_NT_SIGNATURE then
begin
MessageBox(Handle,'This file is not a valid PE。','Information',MB_OK+MB_ICONINFORMATION);
FreeHandle(hFile,mFile);
Exit;
end;
D1Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[0].VirtualAddress,8);
S1Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[0].Size,8);;
D2Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[1].VirtualAddress,8);
S2Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[1].Size,8);;
D3Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[2].VirtualAddress,8);
S3Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[2].Size,8);;
D4Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[3].VirtualAddress,8);
S4Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[3].Size,8);;
D5Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[4].VirtualAddress,8);
S5Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[4].Size,8);;
D6Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[5].VirtualAddress,8);
S6Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[5].Size,8);;
D7Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[6].VirtualAddress,8);
S7Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[6].Size,8);;
D8Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[7].VirtualAddress,8);
S8Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[7].Size,8);;
D9Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[8].VirtualAddress,8);
S9Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[8].Size,8);;
D10Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[9].VirtualAddress,8);
S10Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[9].Size,8);;
D11Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[10].VirtualAddress,8);
S11Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[10].Size,8);;
D12Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[11].VirtualAddress,8);
S12Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[11].Size,8);;
D13Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[12].VirtualAddress,8);
S13Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[12].Size,8);;
D14Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[13].VirtualAddress,8);
S14Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[13].Size,8);;
D15Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[14].VirtualAddress,8);
S15Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[14].Size,8);;
D16Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[15].VirtualAddress,8);
S16Edit.Text:=IntToHex(ImageNTHeaders.OptionalHeader.DataDirectory[15].Size,8);;
UnmapViewOfFile(hView);
FreeHandle(hFile,mFile);
end;
procedure TDirectoryFrm.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TDirectoryFrm.SubMBtnClick(Sender: TObject);
begin
if HexToInt(S1Edit.Text)<1 then
begin
MessageBox(Handle,'No Export Table present!','Info',MB_OK+MB_ICONERROR);
Exit;
end;
Application.CreateForm(TExportTableFrm, ExportTableFrm);
ExportTableFrm.ShowModal;
end;
procedure TDirectoryFrm.Button3Click(Sender: TObject);
begin
if HexToInt(S2Edit.Text)<1 then
begin
MessageBox(Handle,'No Import Table present!','Info',MB_OK+MB_ICONERROR);
Exit;
end;
Application.CreateForm(TImportTableFrm, ImportTableFrm);
ImportTableFrm.ShowModal;
end;
procedure TDirectoryFrm.Button4Click(Sender: TObject);
begin
if HexToInt(S3Edit.Text)<1 then
begin
MessageBox(Handle,'No Resource directory present!','Info',MB_OK+MB_ICONERROR);
Exit;
end;
Application.CreateForm(TResourceFrm, ResourceFrm);
ResourceFrm.ShowModal;
end;
procedure TDirectoryFrm.Button8Click(Sender: TObject);
begin
if HexToInt(S10Edit.Text)<1 then
begin
MessageBox(Handle,'No TLS Table present!','Info',MB_OK+MB_ICONERROR);
Exit;
end;
Application.CreateForm(TPeTlsFrm, PeTlsFrm);
PeTlsFrm.ShowModal;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -