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


الملفات المرفقة
.jpg   ASM JE.jpg (الحجم : 28 ك ب / التحميلات : 44)
.rar   Injection.rar (الحجم : 3.16 ك ب / التحميلات : 21)
الرد
#23
نعم أخي Hanipino فكرة جيدة Smile وأقترح عليك الأداة AsmToMachineCode لتتحويل الأسمبلي الى لغة الآلة...ستجدها ان بحتت في المنتدى

ان كانت لديك أفكار أخرى اطرحها لنحاول معا
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#24
هل جربت أن تقفز للخلف !! ...لم يسبق لي أن فعلتها
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#25
إقتباس :هل جربت أن تقفز للخلف !! ...لم يسبق لي أن فعلتها

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

xxxx يؤشر على عنوان ما فى الخلف .
الرد
#26
كمثال

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


الملفات المرفقة
.jpg   jnz.jpg (الحجم : 97.97 ك ب / التحميلات : 38)
.rar   Injection.rar (الحجم : 3.19 ك ب / التحميلات : 10)
الرد
#27
إقتباس :اذا كان مقبض المكتبة يختلف عن الصفر سيكمل العمل عادى
فى غير ذالك سيقفز للخلف و يحاول تحميل المكتبة من جديد

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

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

------------------------
انا الان احاول
حقن مكتبة معينة مثلا ب MessageBox بنفس طريقة حقن ملف تنفيذى ... لاكن حدث بعض المشاكل
حاول معى اخى me&delphi .
الرد
#29
سأحاول أخي رغم ان الملفات exe تختلف عت المكتبات بغض النظر أن كليها يحمل وينفد في الداكرة
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#30
بالنسبة للقفز للخلف بعدد معين من البايتات...فكرت وقبل أن أبحث توصلت لهده الطريقة من خلال المحاولات

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

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

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

بالتوفيق.
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد


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


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