سؤال

واجهت مشكلة عند قراءة المعلومات التي تم إلقاؤها من ملف قابل للتنفيذ في Linux. المعلومات كما يلي:

804a0ea:  04 08            add $0x8, %al
     ...
804a0f4:  a6               cmpsb %es:(%edi),%ds:(%esi)

لدي سؤالان:

  1. ماذا يعني العنوان 804A0EA و 804A0F4؟ العنوان الافتراضي في مساحة عنوان العملية؟
  2. ماذا يعني؟ كيف يمكنني الحصول على التعليمات على العنوان 804A0F0؟

شكرا لك مقدما.

مزيد من المعلومات حول هذا الجزء من الكود:

Disassembly of section .got.plt:

    0804a0e8 <_GLOBAL_OFFSET_TABLE_>:
     804a0e8:       14 a0                   adc    $0xa0,%al
     804a0ea:       04 08                   add    $0x8,%al
            ...
     804a0f4:       a6                      cmpsb  %es:(%edi),%ds:(%esi)
     804a0f5:       87 04 08                xchg   %eax,(%eax,%ecx,1)
     804a0f8:       b6 87                   mov    $0x87,%dh
     804a0fa:       04 08                   add    $0x8,%al
     804a0fc:       c6 87 04 08 d6 87 04    movb   $0x4,-0x7829f7fc(%edi)
     804a103:       08 e6                   or     %ah,%dh
     804a105:       87 04 08                xchg   %eax,(%eax,%ecx,1)
     804a108:       f6 87 04 08 06 88 04    testb  $0x4,-0x77f9f7fc(%edi)
     804a10f:       08 16                   or     %dl,(%esi)
     804a111:       88 04 08                mov    %al,(%eax,%ecx,1)
     804a114:       26 88 04 08             mov    %al,%es:(%eax,%ecx,1)
     804a118:       36 88 04 08             mov    %al,%ss:(%eax,%ecx,1)
     804a11c:       46                      inc    %esi

أتمنى أن يعطيني أي شخص يد. :-)

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

المحلول

ال جدول الإزاحة العالمي لا يشير إلى التعليمات البرمجية ، فهو يشير إلى البيانات (HRM ... تعويضات ، في الواقع). لذا فإن محاولة تفكيكها لن تعطي رمزًا ذا معنى للغاية. (يمكنك بالفعل العثور على عوامل الإزاحة من خلال النظر إلى قيم الكود. 0804A014 ، ... 080487A6).

... عادة ما يعني مجموعة من 0 في التيار.

نصائح أخرى

  1. انسخ رمز التجميع فقط إلى محرر النصوص
  2. على نوع السطر الأول الرئيسي: (التجميع لـ Main ())
  3. وحفظ الملف كـ *.s
  4. افتح المحطة الطرفية والنوع GCC -S -o لتجميع أو اكتب في GDB الطرفي ثم اكتب التخطيط ASM واكتب ثم طباعة
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top