08-11-2013, 08:50 AM
الصفحات : 1 2
08-11-2013, 01:12 PM
و عليكم السلام :
هذا مثال بسيط :
+
اطلع على بنية ملفات PE حتى تتوضح لك الأمور أكثر و أكثر :
هذا مثال بسيط :
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.rar09-11-2013, 12:17 PM
اخي لم يشتغل الكود اظن انه يحتاج الى مكتبة ما اظن تركيبة ملفات pe
09-11-2013, 01:05 PM
Ninja C0d3r كتب :اخي لم يشتغل الكود اظن انه يحتاج الى مكتبة ما اظن تركيبة ملفات pe
لقد اشتغل معي الكود بشكل عادي ..
هل مسار ال Filename صحيح ؟
ألق نظرة على المرفق ..
09-11-2013, 01:23 PM
جواب SMP3 صحيح و لا مشكلة فيه
لاكن الافضل استعمال كلاسات oop جاهزة كـ tpeformat
لاكن الافضل استعمال كلاسات oop جاهزة كـ tpeformat
09-11-2013, 01:31 PM
houdini كتب :جواب smp3 صحيح و لا مشكلة فيه
لاكن الافضل استعمال كلاسات oop جاهزة كـ tpeformat
الأخ طلب مثال .. لا داعي لتعقيد الأمور ..
تحويلها لكلاس أمر جد سهل و أعتقد أنه لن يجد أي صعوبة في ذلك ..
09-11-2013, 02:17 PM
شكرا لك اخي SMP3 و جزاك الله خيرا
لقد اشتغل معي المرفق بشكل جيد لكن اين توجد stracture PE في الدلفي؟
لقد اشتغل معي المرفق بشكل جيد لكن اين توجد stracture PE في الدلفي؟
09-11-2013, 02:22 PM
Ninja C0d3r كتب :شكرا لك اخي SMP3 و جزاك الله خيرا
لقد اشتغل معي المرفق بشكل جيد لكن اين توجد stracture PE في الدلفي؟
TImageDosHeader & TImageNtHeaders
09-11-2013, 02:30 PM
انا أقصد التركيبة كاملة لملف 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
يعني في دلفي يجب ان تكون هذه التركيبة معرفة في مكان ما صح؟
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
يعني في دلفي يجب ان تكون هذه التركيبة معرفة في مكان ما صح؟
09-11-2013, 02:39 PM
IMAGE_DOS_HEADER = TImageDosHeader
الصفحات : 1 2
