delphi4arab منتديات دلفي للعرب

نسخة كاملة : حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4
السلام عليكم

هذه طريقة اخرى اخى me&delphi احسن من الاولى و اوضح Smile

PHP كود :
procedure MSG;
 
asm
   PUSHAD
   PUSH 0
   PUSH $FFFFFFFF
   PUSH $FFFFFFFF
   PUSH 0
   MOV EAX
, $7E3D07EA //@MessageBoxA
   
CALL EAX
   POPAD
   PUSH $FFFFFFFF
   RET
 end
; 

كود :
CopyMemory(@bFile[Pos_code_injection], @[color=Red]MSG[/color], _SizeOfProc);

حاولت كاتبت العناوين بعد حسابها فى الدالة MSG بدلا من كتابتها مباشرتا فى الملف المحقون .. لاكن لم استطع .
توصلت لطريقة لكتابت العناوين فى الاجراء MSG ... ثم كتابت الاجراء ككل فى الملف المحقون .. هذه الطريقة مؤخوذة من المثال AHPacker

تخزين العناوين فى الاجراء
PHP كود :
procedure PatchMyProc(Proc: Pointer; NewValue: Pointer; OffsInProc: Dword; Size: Dword );
var
  
Writ: cardinal;
begin
  asm
    MOV EAX
, Proc         // EAX نخزين عنوان الاجراء  فى
    
ADD EAX, OffsInProc    //استخراج عنوان بايت معين فى هدا الاجراء
    
MOV Proc, EAX         // تخزين العنوان الاخير فى متغير نتمكن من تعامل معه
  
end;
  
WriteProcessMemory(GetCurrentProcess, Proc, NewValue, Size, Writ);
end; 

الاستعمال .. مثلا تخزين عنوان ذو حجم 4 بايت مكانه يبدء من البايت 9
كود :
PatchMyProc(@MSG, @Adresse,{Pos Byte In Proc}9, 4);
جيد أخي hanipino من خلال البحث يتعلم الانسان الكثير

بالنسبة للحصول على عنوان MessageboxA تلقائيا فقد عدلت على المرفق الدي طرحت الحل بسيط بدون استعمال أي اجراءات أخري

بالتوفيق أخي .
الصفحات : 1 2 3 4