الجمعية المطلقة JMP / Call إلى JMP / أداة استدعاء النسبية / البرنامج المساعد؟

StackOverflow https://stackoverflow.com/questions/7384493

  •  29-10-2019
  •  | 
  •  

سؤال

لدي هذا البرنامج الذي أحاول إجراء هندسة عكسية له. لا أعرف ما إذا كان هذا هو مُحسِّن للمترجم أو تشويشًا أم لا ، ولكن الآن يتم حساب بعض أجزاء الكود التي تستدعي وظائف أخرى عن طريق الرياضيات التي تسمى بعد ذلك مثل Genacodicetagpre

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

لذلك اعتقدت أنني سأصلح ذلك بسهولة عن طريق تحويل جميع المكالمات المطلقة إلى مكالمات نسبية.

أثناء تخطي الشفرة والسماح بحساب جميع الحسابات ، أحصل على jmp / call offset.

لا أواجه مشكلات مثل عدم وجود مساحة كافية لتخصيص التصحيح. نظرًا لأن المكالمة المطلقة عادةً ما تستخدم الخط الذي يمكنني استخدامه قبله لإصلاح الأمور

مكالمة مطلقة ، هنا تنتهي الرياضيات: Genacodicetagpre

ليتم تحويلها إلى إعجاب Genacodicetagpre

حسنًا ، لن يعمل ما ورد أعلاه بالطبع لأن eax كان شيئًا بالفعل ، ولكنه مجرد مثال على رمز زائف

حسنًا ، سؤالي ليس كيفية القيام بذلك ، ولكن هل هناك أي مكون إضافي يقوم بذلك تلقائيًا في OllyDbg أو IDA Pro؟

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

المحلول

كنت ترغب في الحصول على العنوان المحسوب للمكالمات المتغيرة، وهذا من الصعب حقا معرفة ذلك لأنهم ليسوا متساوين، كيف شرحته في هذا الجزء

seg000: 0044f7d1 إضافة EAX، 3B882683H SEG000: 0044F7D6 دعوة EAX

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

لذا فإن أسهل طريقة لك هي كسر هذا المكالمة وقراءة السجل. آمل أن تساعدك في فهم أو لم أجب على الحق، سؤالك مضلل بعض الشيء لأنك قلت أشياء عن JMPs وحقن DLL التي تهيجني. يمكنك أن تقول لي أكثر تفصيلا في رسالة خاصة أو هنا.

نصائح أخرى

يمكنك استخدام loadlibrary

استخدم kernel32.loadLibrarya

kernel32.getProcaddress

اتصل EAX

kernel32.freelibrary

أيضا عند استيراد رأس Wealer، يتم حفظ جميع العناوين الوظائف على العناوين المستقرة.تعد عنوان الوظائف تغييرات ولكن يمكنك دائما استدعاء هذه العناوين المستقرة وليس عنوان وظائفك.

يمكنك أن ترى عنوان وظائف DLL من قبل بعض البرامج مثل "PE Explorer". أدخل وصف الصورة هنا

يمكنك دائما استدعاء 00402008H، ولكن 00402008H ليس عنوان وظيفتك. قيمة 00402008 هي عنوان وظيفتك.

  • ff25 08204000 سيتصل بقيمة 00402008
  • e8 05000000 سيتصل EIP + 00000005
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top