الفريق العربي للهندسة العكسية
ما هو الغرض من XOR الرجيستر مع نفسه ؟ XOR EAX, EAX - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html)
+--- قسم : الهندسة العكسية - Reverse Code Engineering (https://www.at4re.net/f/forum-19.html)
+--- الموضوع : ما هو الغرض من XOR الرجيستر مع نفسه ؟ XOR EAX, EAX (/thread-3262.html)



ما هو الغرض من XOR الرجيستر مع نفسه ؟ XOR EAX, EAX - R333T - 10-09-2022

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 دون استخدام أي وحدة تنفيذ.



RE: ما هو الغرض من XOR الرجيستر مع نفسه ؟ XOR EAX, EAX - R333T - 10-09-2022

أضيف أيضا تستعمل لإرجاع كود الخروج أقصد بذالك exit code فكما نعلم الكود 0 يعني أن البرنامج إشتغل بنجاح ولا توجد أي إستثناء خطأ أقصد بذالك error exception
فكأن ما كتبت في  c  
 return 0

 النظير instruction بال assembly هي
  XOR EAX, EAX
RET


RE: ما هو الغرض من XOR الرجيستر مع نفسه ؟ XOR EAX, EAX - ahmed_1337 - 10-09-2022

للإضافة
حتى انها اكتر كفائة لأنه xor تحول ل 1 من micro ops بينا mov ف هي معقدة على حسب ال operands ولاكن حتى ادا ستعملت ال mov
سوف تتحول ل xor ف لما توصل ل مرحلةdecoder و ب تحديد عملية ده يسمونها micro-fusion و في نهاية ل
mov eax, 0
و xor eax,eax
سوف يتم تنفيد نفس Uop