جلب معلومات عن ملف pe
#1
السلام عليكم
كيف جلب بعض المعلومات عن ملف PE
ك EP و imagebase و بعض المعلومات الاخرى Big Grin
الرد
#2
و عليكم السلام :
هذا مثال بسيط :
PHP كود :
var
  
hFile: THandle;
  
hFileMap: Cardinal;
  
Filename: string;
  
pBaseAddress: PByte;
  
pDosHeader: PImageDosHeader;
  
pNtHeaders: PImageNtHeaders;
  
dwOffset: Cardinal;
  
ImageBase, EP: DWORD;
begin
  Filename 
:= 'C:\Users\X\Desktop\ColorPicker.exe';
  
hFile := CreateFile(PChar(Filename), GENERIC_READ, FILE_SHARE_READ, nil,
    
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if (
hFile = INVALID_HANDLE_VALUE) then
    
Exit;
  
hFileMap := CreateFileMapping(hFile, nil, PAGE_READONLY or SEC_IMAGE,
    
0, 0, nil);
  if (
hFileMap = 0) then
    begin
      CloseHandle
(hFile);
      Exit;
    
end;
  
pBaseAddress := MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 0);
  if (
pBaseAddress = nil) then
    begin
      CloseHandle
(hFileMap);
      
CloseHandle(hFile);
      Exit;
    
end;

  
dwOffset := Cardinal(pBaseAddress);
  
pDosHeader := PImageDosHeader(pBaseAddress);
  
pNtHeaders := PImageNtHeaders(dwOffset + Cardinal(pDosHeader._lfanew));

  { 
ImageBase }
  
ImageBase := pNtHeaders^.OptionalHeader.ImageBase;
  
Edit1.Text := IntToHex(ImageBase, 8);
  { 
Entry Point }
  
EP := pNtHeaders^.OptionalHeader.AddressOfEntryPoint;
  
Edit2.Text := IntToHex(EP, 8);

  
UnmapViewOfFile(pBaseAddress);
  
CloseHandle(hFileMap);
  
CloseHandle(hFile);
end; 
+
اطلع على بنية ملفات PE حتى تتوضح لك الأمور أكثر و أكثر :
كود :
http://www.mediafire.com/download/a6ked3ovewjx80y/Portable_Executable_File_Format_-_A_Reverse_Engineer_View.rar
Open Your Source .. Open Your Mind
الرد
#3
اخي لم يشتغل الكود اظن انه يحتاج الى مكتبة ما اظن تركيبة ملفات pe
الرد
#4
Ninja C0d3r كتب :اخي لم يشتغل الكود اظن انه يحتاج الى مكتبة ما اظن تركيبة ملفات pe

لقد اشتغل معي الكود بشكل عادي ..
هل مسار ال Filename صحيح ؟

ألق نظرة على المرفق ..


الملفات المرفقة
.rar   PE.rar (الحجم : 4.11 ك ب / التحميلات : 6)
Open Your Source .. Open Your Mind
الرد
#5
جواب SMP3 صحيح و لا مشكلة فيه
لاكن الافضل استعمال كلاسات oop جاهزة كـ tpeformat
.:: مبرمج شوارع ::.
الرد
#6
houdini كتب :جواب smp3 صحيح و لا مشكلة فيه
لاكن الافضل استعمال كلاسات oop جاهزة كـ tpeformat

الأخ طلب مثال .. لا داعي لتعقيد الأمور ..
تحويلها لكلاس أمر جد سهل و أعتقد أنه لن يجد أي صعوبة في ذلك ..
Open Your Source .. Open Your Mind
الرد
#7
شكرا لك اخي SMP3 و جزاك الله خيرا
لقد اشتغل معي المرفق بشكل جيد لكن اين توجد stracture PE في الدلفي؟
الرد
#8
Ninja C0d3r كتب :شكرا لك اخي SMP3 و جزاك الله خيرا
لقد اشتغل معي المرفق بشكل جيد لكن اين توجد stracture PE في الدلفي؟

TImageDosHeader & TImageNtHeaders
Open Your Source .. Open Your Mind
الرد
#9
انا أقصد التركيبة كاملة لملف PE اين توجد مثلا Structure IMAGE_DOS_HEADER فقط
Public Structure IMAGE_DOS_HEADER
Public e_magic As UInt16
Public e_cblp As UInt16
Public e_cp As UInt16
Public e_crlc As UInt16
Public e_cparhdr As UInt16
Public e_minalloc As UInt16
Public e_maxalloc As UInt16
Public e_ss As UInt16
Public e_sp As UInt16
Public e_csum As UInt16
Public e_ip As UInt16
Public e_cs As UInt16
Public e_lfarlc As UInt16
Public e_ovno As UInt16
Public e_res_0 As UInt16
Public e_res_1 As UInt16
Public e_res_2 As UInt16
Public e_res_3 As UInt16
Public e_oemid As UInt16
Public e_oeminfo As UInt16
Public e_res2_0 As UInt16
Public e_res2_1 As UInt16
Public e_res2_2 As UInt16
Public e_res2_3 As UInt16
Public e_res2_4 As UInt16
Public e_res2_5 As UInt16
Public e_res2_6 As UInt16
Public e_res2_7 As UInt16
Public e_res2_8 As UInt16
Public e_res2_9 As UInt16
Public e_lfanew As UInt32
End Structure

يعني في دلفي يجب ان تكون هذه التركيبة معرفة في مكان ما صح؟
الرد
#10
IMAGE_DOS_HEADER = TImageDosHeader
Open Your Source .. Open Your Mind
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم