سؤال

لدي تطبيق MFC الذي أعطيته (بدون شفرة المصدر) الذي يفتح نافذة مع زر "تحديث"، مما يؤدي بعد ذلك إلى تحديث طويل جدا بعد النقر عليه.

أرغب في تعديل البرنامج بحيث عند إنشاء النافذة (أو في مكان آخر مثل Domodal)، يتم إرسال رسالة إلى البرنامج لجعله يعتقد أنه تم الضغط على الزر.

لقد تم اللعب مع هذا لفترة من الوقت في IDA Pro و Ollydbg دون جدوى. نظرت إلى ربما باستخدام المضاعف، لكن هذا لم يجلب أي نجاح.

اي نصيحه؟

هل كانت مفيدة؟

المحلول

إذا كنت لا تحب فكرة استخدام برنامج "ماكرو" ثانوي، فيمكنك التصحيح ثنائي البرنامج الأصلي لاستدعاء معالج BM_CLICK في الزر. إذا تمكنت من العثور على بعض المساحة للمكالمات (الحد الأدنى 5 بايت بدون حجج)، فيمكنك القيام بذلك باستخدام Ollydbg وحدها (بعد تحرير التعليمات البرمجية، وحددها، وحدد "نسخ إلى قابل للتنفيذ" -> "التحديد" من النقر الأيمن قائمة). خلاف ذلك، ستحتاج إلى إنشاء قسم رمز جديد مع محرر PE (مثل أدوات Lordpe أو PE) وإضافة التعليمات البرمجية هناك (عادة ما تريد تغيير مكالمة في البرنامج إلى القفز إلى قسمك، حيث أنت قم بإجراء المكالمة الأصلية بالإضافة إلى المكالمة إلى معالج النقر بالزر، ثم القفز مرة أخرى إلى الموضع القديم بعد قفزك المرصح).

نصائح أخرى

هناك عدة طرق للقيام بذلك باستخدام تقنيات اختبار أتمتة الاختبار، ولكن أبسط هي ببساطة الحصول على مقبض النافذة للزر الذي تريده وإرساله BM_CLICK رسالة. وبعد هذا يفترض أن لديك معرفة عمل ب C / C ++ على Windows. إذا لم يكن الأمر كذلك، فهناك وسيلة أخرى باستخدام .NET أو تكنولوجيات أخرى. أنا لست على دراية IDA-Pro أو ollydbg.

راجع هذه الوحدة النمطية PERL Win32 :: Guitest يمكن أن تساعدك على القيام بذلك. يمكنك الكتابة معها برنامج نصي بيرل وتضمينه في البرنامج الخاص بك. أو يمكنك استخدام واجهة برمجة تطبيقات Win32 التي لفت احتياجاتك المطلوبة واستخدامها.

ما عليك سوى إنشاء برنامجا ثانيا وسيقوم بتناول طعامه وسيرسل ماوس عند استخدام SendInput (...)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top