|

楼主 |
发表于 2024-2-7 20:29:35
|
显示全部楼层
明白了,控制台程序:
program Project6;
{$APPTYPE CONSOLE}
{$R *.res}
uses
Windows,
SysUtils,
Classes;
type
TPEHeader = record
Signature: DWORD;
Machine: WORD;
NumberOfSections: WORD;
TimeDateStamp: DWORD;
PointerToSymbolTable: DWORD;
NumberOfSymbols: DWORD;
SizeOfOptionalHeader: WORD;
Characteristics: WORD;
end;
procedure ReadPEFile(const FileName: string);
var
Stream: TFileStream;
PEHeader: TPEHeader;
begin
try
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
try
// 读取PE头部
Stream.ReadBuffer(PEHeader, SizeOf(PEHeader));
// 输出PE头部信息
WriteLn('Signature: ', PEHeader.Signature);
WriteLn('Machine: ', PEHeader.Machine);
WriteLn('Number of Sections: ', PEHeader.NumberOfSections);
WriteLn('Time/Date Stamp: ', PEHeader.TimeDateStamp);
WriteLn('Pointer to Symbol Table: ', PEHeader.PointerToSymbolTable);
WriteLn('Number of Symbols: ', PEHeader.NumberOfSymbols);
WriteLn('Size of Optional Header: ', PEHeader.SizeOfOptionalHeader);
WriteLn('Characteristics: ', PEHeader.Characteristics);
finally
Stream.Free;
end;
except
on E: Exception do
WriteLn('Error: ', E.Message);
end;
end;
begin
ReadPEFile('X:\看雪论坛精华\西班牙网站下载的全套CrackMe教学\000-100\0-temp\CRACKME.EXE');
Readln;
end.
|
|