![]() |
|
حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - نسخة قابلة للطباعة +- 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) |
حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 26-06-2011 البرمتر من نوع Pchar ... عند استدعاء دالة المكتبة (dll) تقوم هذه الدالة بنتفيذ الدالة IputBox و تضع هذا البرمتر فى احد برمترات الدالة IputBox ... لاكن ضهر على شكل علامات اسفهام إقتباس :ماذا نحط في الباراميتر؟ ضع اى شىء ... ليكتب فى البرمتر الاول ل الدالة IputBox ... الان يصدر على شكل علامات اسفهام ... ساحاول ايجاد الحل لضهوره بالشكل الصحيح . المهم فى المثال حقن المكتبة و استدعاء دالتها بنجاح ... ثم نهتم ب برمتراتها و كيفية التعامل مع نوع هذه البرمترات. حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 27-06-2011 دائما علامات استفهام استعملة Pchar , ShortString ShareMem Unit دائما نفس المشكل ???? . حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 27-06-2011 بعد ليلة حرب ضارية مع Pchar تبن ان هاكذا نوع من المتغيرات لايمكن تخزين عنوانه فى EAX بل يجب ان يكون فى EDX و عليه تصبح MyLibraryInjectedByte على هذا النحو PHP كود : MyLibraryInjectedByte: array[1..39] of Byte =إقتباس :procedure Input_Boox(S: pAnsiChar); stdcall;[/align] الان تم الاستفادة من المكتبة المحقونة 100% اخى cargem
حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 27-06-2011 أخي Hanipino تم تعديل المرفق الدي تفضلت بطرحه...وتشكر على هدا السورس ولي سؤال...عند التنقيح هل قمت بتنقيح ملف تنفيدي يستدعي المكتبة التي برمجتها...لأني لاحظت اخنلافا في تحميل مكتبات النظام و المكتبات التي نبرمجها...لأني قمت في اول محاولة بالتعديل على المرفق الأصلي لدالة shellExecute وباءت المحاولة بالفشل ! رغم أني أرى الكود صحيح في وجهة نظري تحياتي لك حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 27-06-2011 إقتباس :تبن ان هاكذا نوع من المتغيرات لايمكن تخزين عنوانه فى EAX بل يجب ان يكون فى EDX يمكن دلك أخي Hanipino ...هناك خدعة بسيطة أنظر للمرفق حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 27-06-2011 إقتباس :ولي سؤال...عند التنقيح هل قمت بتنقيح ملف تنفيدي يستدعي المكتبة التي برمجتها...لأني لاحظت اخنلافا في تحميل مكتبات النظام و المكتبات التي نبرمجها...لأني قمت في اول محاولة بالتعديل على المرفق الأصلي لدالة shellExecute وباءت المحاولة بالفشل ! نعم و هذا الذى كنت اتكلم عليه منذ البداية ... الله اعلم بالنسبة لمكتبات النضام فعاوين دوالها ثابتكما اشار tf6m عكس المكتبات التى نبرمجها نحن . إقتباس :هناك خدعة بسيطة أنظر للمرفق نعم خدعة رائعة ... وضعت عنوان الدالة اولا فى stack ثم وضعت البرمتر ... انت الذى عكست العملية ام انا الذى عكسها (من المفروض من الصحيح )المهم اخى me&delphi بارك الله فيك و بالتوفيق . حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 27-06-2011 إقتباس :من الصحيح هنا يجب فهم آلية عمل المكدس... يتم دفع البارامترات بشكل مقلوب . أنظر لمثال MessageBoxA إقتباس :ولي سؤال...عند التنقيح هل قمت بتنقيح ملف تنفيدي يستدعي المكتبة التي برمجتها. لم تجب عن سؤالي أخي Hanipino حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - hanipino - 27-06-2011 إقتباس :لم تجب عن سؤالي أخي نعم تتبعته بكلا المكتبتين مكتبات النضام و مكتبتنا يوجد مثالين (MessageBox و ShellExecute) مكتبات النضام و بالنسبة لمكتبة من برمجتنا ايضا صنعت برنامج عادى يستعدى مكتبتنا و تتبعته كيف تعامل معها و حاولت تقليده ... ثم حقن كيف تعامل معها. حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 27-06-2011 إقتباس :صنعت برنامج عادى يستعدى مكتبتنا و تتبعته كيف تعامل معها و حاولت تقليده ... ثم حقن كيف تعامل معها. بارك الله فيك أخي Hanipino كان هدا المثال شيقا واستفدنا فيه والحمد لله...لأني صراحة مللت برمجة قواعد البيانات فالبرمجة ليست قواعد بيانات فقط لأن جل مانفعله في العمل قواعد البيانات ... بالتوفيق أخي حقن ملف تنفيذى و جعله يحمل مكتبة من صنعنا - me_delphi - 28-06-2011 تعديل آخر أخي HaniPino PHP كود : //--------------------- Exeute Function -------------------------//لسنا بحاجة لدفع عنوان دالتنا الى المكدس لأنه يتواجد في المسجل EAX لدا يكفي دفع البارامتر ثم تنفيد CALL EAX |