سؤال

أنا التفكيك الكراك لي وأريد أن تحل محل مساحة فارغة مع سيتلجيتيمتكست وينابي () الذي يأخذ ثلاث معلمات.
لقد نجحت في إضافة تعليمات "الدفع" الثلاثة ولكن عندما أحاول التجميع call <JMP.&USER32.SetDlgItemTextA> أوليدبغ يقول لي باللون الأحمر Unknown module

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

وهنا لقطة (الحجم الكامل): enter image description here

تحرير 1:لقد وجدت وظيفة جمب في عنوان 0 * 00401460.لذلك أنا استبدالها مع ذلك وعلى الفور أوليدبغ استبدالها مع call <JMP.&USER32.SetDlgItemTextA> سلسلة.لماذا لا تستطيع أن تفعل العكس?

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

المحلول

في ال تنسيق ملف بي يتم إجراء مكالمة إلى الوظائف المستوردة عادة باستخدام جدول عنوان الاستيراد (إات).تحتوي هذه البنية على قائمة مستمرة من مؤشرات العنوان التي سيتم تهيئتها بواسطة محمل ويندوز عند تحميل ثنائي وحل الواردات.

في دليل الاستيراد ، تكون معلومات حول الوحدات النمطية المستوردة ، لكل وحدة نمطية ، أسماء الوظائف والوظائف التي تم استيرادها ترتيبيا.في عملية التحميل يتم استخدام هذه المعلومات لتحديد موقع وحدات ووظائف لاستيراد ويتم تهيئة إات مع العنوان في الذاكرة من الوظائف المستوردة ، التي من شأنها أن تكون بالفعل تحميل في الذاكرة (في إجراء الاستيراد المشترك).

ما عليك القيام به هو البحث في ثنائي عندما يكون هناك دعوة أخرى ل SetDlgItemTextA, ، وفقا لسؤالك لديك بالفعل هذا.يجب أن تكون التعليمات مثل CALL [address] (على سبيل المثال: CALL [0x401634]) أو JMP [address] (على سبيل المثال: JMP [0x401434]) ، لاحظ أن الاتصال بالعنوان الموجود في هذا العنوان ، وليس الاتصال بهذا العنوان ، هو غير مباشر دوبلي (على الأرجح أوليدب حل اسم الوظيفة واستبدال هذا العنوان بالاسم) ، في هذه الحالة يمكنك قراءة عنوان التمثيل الثنائي للتعليمات.ستكون مكالمتك هي نفسها ، ربما يجب أن يكون رمز التشغيل الخاص بالتعليمات 0xFF (Indirect CALL or JMP).

العنوان في CALL or JMP هو عنوان المؤشر إلى الدالة المستوردة التي سيقوم المحمل بتعيينها مع عنوان الذاكرة الفعلي للدالة المستوردة.

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