delphi4arab منتديات دلفي للعرب
حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - نسخة قابلة للطباعة

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

الصفحات: 1 2 3 4


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 28-06-2011

نعم صح بارك الله فيك اخى me&delphi


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 29-06-2011

قمت باضافة قفزتين حتى لا تصدر رسائل خطاء بسبب عدم وجود المكتبة او الدالة غير موجودة ... .
الاولى
اذا كان مقبض المكتبة = 0 اى (EAX = 0 )
هنى نقفز 25 بايت اى بالهاكس = 19
PHP كود :
$83, $F8, 0,        {CMP EAX, 0}
                        $
74, $19,           {JMP 25 Byte} 
الثانية
اذا كان كان عنوان الدالة = 0
هنى نقفز 07 بايت فقط Smile
PHP كود :
$83, $F8, 0,        {CMP EAX, 0}
                        $
74, $07,           {JMP 07 Byte} 
[صورة: attachment.php?attachmentid=2807&stc=1&d=1309317651]



حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 30-06-2011

نعم أخي Hanipino فكرة جيدة Smile وأقترح عليك الأداة AsmToMachineCode لتتحويل الأسمبلي الى لغة الآلة...ستجدها ان بحتت في المنتدى

ان كانت لديك أفكار أخرى اطرحها لنحاول معا


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 30-06-2011

هل جربت أن تقفز للخلف !! ...لم يسبق لي أن فعلتها


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 30-06-2011

إقتباس :هل جربت أن تقفز للخلف !! ...لم يسبق لي أن فعلتها

لا ادرى كيف ... لاكن يمكن استعمال
إقتباس : push xxxx
retn

xxxx يؤشر على عنوان ما فى الخلف .


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 30-06-2011

كمثال

اذا كان مقبض المكتبة يختلف عن الصفر سيكمل العمل عادى
فى غير ذالك سيقفز للخلف و يحاول تحميل المكتبة من جديد .
[صورة: attachment.php?attachmentid=2809&stc=1&d=1309422109]



حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 30-06-2011

إقتباس :اذا كان مقبض المكتبة يختلف عن الصفر سيكمل العمل عادى
فى غير ذالك سيقفز للخلف و يحاول تحميل المكتبة من جديد

هنا سيدخل البرنامج في حلقة غير منتهية ...سيحاول دائما تحميل المكتبة اذا كانت قيمة المقبض صفر.

نعم أخي Hanipino بالنسبة للعنوان لا يوجد مشكل...فقط عندما رأيت المثال أي القفز للأمام بعدد معين من البيتات فكرت في القفز للخلف بنفس الطريقة أي بالبايت و ليس العنوان..هل لديك فكرة ?


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 30-06-2011

ليست لدى فكرة عن القفز للخلف بعدد معين من Bytes

------------------------
انا الان احاول
حقن مكتبة معينة مثلا ب MessageBox بنفس طريقة حقن ملف تنفيذى ... لاكن حدث بعض المشاكل
حاول معى اخى me&delphi .


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 30-06-2011

سأحاول أخي رغم ان الملفات exe تختلف عت المكتبات بغض النظر أن كليها يحمل وينفد في الداكرة


حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 02-07-2011

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

لنعتبر هدا هو الشيل او اللودر المراد حقنه (فقط مثال لتوضيح الفكرة)

PHP كود :
\x40
\x48
\xC7\xC0\x33\x00\x00\x00
\xE9\x2E\x00\xC0\xFF 

ومقابله بالأسمبلي

PHP كود :
inc eax
dec eax
mov eax
,1
jmp 00000033 

و نحن نريد أن نقفز للخلف وبالضبط الىinc eax وبالتالي سنستبدل القيمة 00000033 بالقيمة التى تمكننا من القفز الى المكان المطلوب

ادا قمنا بعد مجموع البايتات ابتداءا من FF والتي هي 00000033 الى البايت x40 الدي مقابله inc eax

سنجدها تساوي 13 بايت وما دمنا نريد القفز للخلف أي القيمة سالبة 13-

ويبقى فقط تحويل القيمة 13- من Decimal الى Hex

وسأشرح الطريقة هنا للمبتدئين

نفتح الألة الحاسبة الخاصة بالوندوز تم نقوم بعملية حسابية ناتجها 13-

مثلا 13- = 26-13 ثم نحول ل Hex و ستعطينا F3

وهكدا نضع مكان البايت FF القيمة F3

بالنسبة لحقن Dll ب MessageBoxA لم أتو صل لحل فعال أخي Hanipino

وأتمنا أن أكون أفدت اخواني في المنتدى ولو بالقليل.

بالتوفيق.