delphi4arab منتديات دلفي للعرب
جلب معلومات عن ملف pe - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : جلب معلومات عن ملف pe (/showthread.php?tid=5700)

الصفحات: 1 2


جلب معلومات عن ملف pe - Ninja C0d3r - 08-11-2013

السلام عليكم
كيف جلب بعض المعلومات عن ملف PE
ك EP و imagebase و بعض المعلومات الاخرى Big Grin


جلب معلومات عن ملف pe - SMP3 - 08-11-2013

و عليكم السلام :
هذا مثال بسيط :
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



جلب معلومات عن ملف pe - Ninja C0d3r - 09-11-2013

اخي لم يشتغل الكود اظن انه يحتاج الى مكتبة ما اظن تركيبة ملفات pe


جلب معلومات عن ملف pe - SMP3 - 09-11-2013

Ninja C0d3r كتب :اخي لم يشتغل الكود اظن انه يحتاج الى مكتبة ما اظن تركيبة ملفات pe

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

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


جلب معلومات عن ملف pe - Houdini - 09-11-2013

جواب SMP3 صحيح و لا مشكلة فيه
لاكن الافضل استعمال كلاسات oop جاهزة كـ tpeformat


جلب معلومات عن ملف pe - SMP3 - 09-11-2013

houdini كتب :جواب smp3 صحيح و لا مشكلة فيه
لاكن الافضل استعمال كلاسات oop جاهزة كـ tpeformat

الأخ طلب مثال .. لا داعي لتعقيد الأمور ..
تحويلها لكلاس أمر جد سهل و أعتقد أنه لن يجد أي صعوبة في ذلك ..


جلب معلومات عن ملف pe - Ninja C0d3r - 09-11-2013

شكرا لك اخي SMP3 و جزاك الله خيرا
لقد اشتغل معي المرفق بشكل جيد لكن اين توجد stracture PE في الدلفي؟


جلب معلومات عن ملف pe - SMP3 - 09-11-2013

Ninja C0d3r كتب :شكرا لك اخي SMP3 و جزاك الله خيرا
لقد اشتغل معي المرفق بشكل جيد لكن اين توجد stracture PE في الدلفي؟

TImageDosHeader & TImageNtHeaders


جلب معلومات عن ملف pe - Ninja C0d3r - 09-11-2013

انا أقصد التركيبة كاملة لملف 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

يعني في دلفي يجب ان تكون هذه التركيبة معرفة في مكان ما صح؟


جلب معلومات عن ملف pe - SMP3 - 09-11-2013

IMAGE_DOS_HEADER = TImageDosHeader