تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ما هو الغرض من XOR الرجيستر مع نفسه ؟ XOR EAX, EAX
#1
Smile 
Salam


أقصد هكذا 
XOR EAX, EAX
إنه أكثر كفاءة.

 كود التشغيل أقصر من 
MOV EAX, 0
ب 2 bytes أي word

 ، ويتعرف المعالج على الحالة الخاصة ويعاملها على أنها 

MOV EAX, 0

سيحتوي MOV EAX, 0 على بايت فارغ (null) في assembled bytes ، بينما XOR EAX, EAX لا يحتوي على بايت فارغ.
أقصد هنا 

'0\'
أو
x00\

يعد هذا أمرًا بالغ الأهمية للعديد من عمليات الاستغلال نظرًا لأن المصطلح الشائع في كود C يقرأ حتى يكون لديك بايت فارغ.

عادةً ما يتم تخزين String variables كمصفوفات من الأحرف ، منتهية ببايت فارغ.


لا يمكننا دفع PUSH أو نقل MOV قيمة 0 لأن ذلك سيؤدي تلقائيًا إلى إنشاء بايت فارغ (x00\) والذي سيوقف shellcode. وبدلاً من ذلك ، سننشئ null في EAX عن طريق إجراء XOR مع نفسها ثم دفع تلك القيمة إلى stack.


ختام  nice

في architectures الحديثة ، سيكون XOR أسرع لأن السجل مصفر في rename stage دون استخدام أي وحدة تنفيذ.
أعضاء أعجبوا بهذه المشاركة : the9am3 , johnvb , Newhak , ROZBUD , xdvb_dz , Venox , adhem


الردود في هذا الموضوع
ما هو الغرض من XOR الرجيستر مع نفسه ؟ XOR EAX, EAX - بواسطة R333T - 10-09-2022, 04:01 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 4 ) ضيف كريم