
17.11.2008, 21:18
|
|
Участник форума
Регистрация: 24.01.2008
Сообщений: 110
С нами:
9629565
Репутация:
209
|
|
ясли я правельно тебя понял то этот исходник должен тебе помочь
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
OpenDialog1: TOpenDialog;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
S:string;
size,he:integer;
c:byte;
begin
{ TODO -oUser -cConsole Main : Insert code here }
S:= fileSearch(edit1.text, 'E:\gav\');
if S<>'' then
begin
he:=fileOpen(S,fmOpenReadWrite);
size:=Windows.GetFileSize(he,nil);
edit2.text:= intToStr(size);
end;
fileread(he,c,1); // считать один байт
if C <>ord('M')then
begin
exit;
end;
fileread(he,c,1); // считать один байт
if c<> ord('Z')then
begin
exit;
end;
MessageBox(0,'обнаружена стандартная'#10#13' структура РЕ файла','файл найден',MB_ICONINFORMATION);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.Execute;
Edit1.Text:= OpenDialog1.FileName ;
end;
end.
или вот правда придеться расписать структуру ре фаила зато ты сможешь смотреть и мнеять весь фаил неплохо зная его тип (исползуеться при написании крипторов)
Код:
tupe
pe_head=record // структура PE //Signature:dword;
CPU_Type:word;
Num_of_Objects:word;
Time_Date_Stamp:dword;
Pointer_to_COFF_table:dword;
COFF_table_size:dword;
NT_Header_Size:word;
Flags:word;
Magic:word;
Link_Major:byte;
Link_Minor:byte;
Size_of_Code:dword;
Size_of_Init_Data:dword;
Size_of_UnInit_Data:dword;
Entry_point_RVA:dword;
Base_of_Code:dword;
Base_of_Data:dword;
Image_Base:dword;
Object_Align:dword;
File_Align:dword;
OS_Major:word;
OS_Minor:word;
USER_Major:word;
USER_Minor:word;
SubSys_Major:word;
SubSys_Minor:word;
Reserved:dword;
Image_Size:dword;
Header_Size:dword;
File_CheckSum:dword;
SubSytem:word;
DLL_Flags:word;
Stack_Reserve_Size:dword;
Stack_Commit_Size:dword;
Heap_Reserve_Size:dword;
Heap_Comit_Size:dword;
Loader_Flags:dword;
Num_of_RVA_and_Sizes:dword;
Export_Table_RVA:dword;
Export_Data_Size:dword;
Import_Table_RVA:dword;
Import_Data_Size:dword;
Resource_Table_RVA:dword;
Resource_Data_Size:dword;
Exception_Table_RVA:dword;
Exception_Data_Size:dword;
Security_Table_RVA:dword;
Security_Data_Size:dword;
Fix_Ups_Table_RVA:dword;
Fix_Ups_Data_Size:dword;
Debug_Table_RVA:dword;
Debug_Data_Size:dword;
Image_Description_RVA:dword;
Description_Data_Size:dword;
Machine_Specific_RVA:dword;
Machnine_Data_Size:dword;
TLS_RVA:dword;
TLS_Data_Size:dword;
Load_Config_RVA:dword;
Load_Config_Data_Size:dword;
Reserved1:array[1..8] of byte;
IAT_RVA:dword;
IAT_Data_Size:dword;
Reserved2:array[1..24] of byte;
end;
Section_table=record // структура таблица секции
Object_Name:array[1..8] of char;
Virtual_Size:dword;
Section_RVA:dword;
Physical_Size:dword;
Physical_Offset:dword;
Reserved:array[1..12] of byte;
Object_Flags:dword;
после ты сможешь спокойно получить доступ к любой секции без гимароя например
begin
name:=st[y].Object_Name; // получить имя секции
end; ну и так далие пример на Delphi из криптора слеша
Последний раз редактировалось Грот; 17.11.2008 в 21:30..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|