الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اسئلة ذكية وtricks

مغلق
بدأه sadeel في 1 نوفمبر 2005 · 6 رد · 728 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته امانة يا جماعة كل مين عنده سؤال صغير و حلو (يعني مشان ما تزهئ العالم و هي عم تقرأ :wacko: ) يبعته السؤال بتخصص بلغة التجميع مثلا كود صغير و يلخبط حتى المحترفي :rolleyes: ن خلينا نستفيد و الله يتجزاكم كل خير

تم تعديل هذه المشاركة بواسطة Xacker في 4 نوفمبر 2005 في 00:15

#2

السلام عليكم ورحمة الله وبركاته

وكل عام وانتم بخير

فكرة رائعة ويمكننا تطويرها والاستمرار فى طرح الافكار و الالغاز إلى ما لا نهاية

السؤال الاول :

حاول فهم ا يفعله هذا الكود واشرح ما توصلت إليه

.386
.Model Flat ,StdCall
option casemap:none

include D:\Masm32\include\windows.inc
includelib kernel32.lib
includelib user32.lib


GetModuleHandleA    PROTO :DWORD
ExitProcess         PROTO :DWORD
MessageBoxA         PROTO :DWORD,:DWORD,:DWORD,:DWORD


.Data
MB1Titel                db "Playing with OpCodes",0     
MB1Text                 db "for programmers only ...",0 

.data?
hInstance               dd ?

.Code
Main:

push    0h
call    GetModuleHandleA
mov     hInstance,eax



nop
mov     eax,OFFSET My_Box
db      0EBh
call    eax
                           
nop 
nop
nop
nop
nop
nop


ExitPrg:
push    hInstance
call    ExitProcess


My_Box:
push    0h
push    OFFSET MB1Titel
push    OFFSET MB1Text
push    0h
call    MessageBoxA
ret
end Main

البرنامج مقتبس من دروس قديمة للاسمبلى ولكن فيه خدعة لم ارها فى درس اخر من قبل...

hint : الرقم 0EBh يعنى call , حاول تتبع البرنامج من خلال debugger او بإستخدام الـhex editor حاول إستنتاج ما يحدث ثم اشرح عمل البرنامج ...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3

ماعرف في masm32

بس اعجني الكود

push    0h
call    GetModuleHandleA
mov     hInstance,eax

الحصول على handelللبرنامج

ثم عمل initialize اعتقد كذا البرنامج مايحتاج

بس هنا ما عرفت ليش تكرار call مرتين

يمكن الاولى للـــــــــmassagebox

والثانيه للخروج

db      0EBh
call    eax

لبرنامج بس messge

:D

مـــــــــــــــــــــــــــــــــــــــــــــــ كـــــــــــــــــــــل احترامي ــــــــــــــــــــــــــــــــــــــع
#4

هناك طريقة افضل فى masm32 وهى على النحو التالى :

invoke GetModuleHandle 
mov hInstance,eax

ميزة هذه الطريقة هى انهو إذا كان لديك دالة تستعيها بعدد كبير من المتغيرات لن تحتاج لعمل push بعدد المتغيرات وإنما يكفى عمل invoke فى سطر واحد, وفى هذه الحالة الشفرة تصبح سهلة القرائه .

ننتظر باقى الاخوة قبل ان نشرح البرنامج وشكراً للمحاولة...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

طبعا أولا نعمل Instance للبرنامج وحفظ المقبض له لاستخدامها في اغلاق البرنامج

اللعب مع الـ opcode للمبتدئين مثلي :lol: :

حول

call    eax

الى opcode تحصل على

FFD0

ضع قبلها

EB

EBFF
D0xxxx

وحولها من البدايه مره اخرى الى أسمبلي لتفهم معنى التعليمه

Jmp $+2-1; jmp $+1

ترى أن معناها ارجع بايت واحد من العنوان التالي - لا اعرف كيف افسرها -

db 0ebh
db 0ffh; اطرح منه واحد
db 0d0h; العنوان التالي

يعني لو بدلنا - هنا فقط - EB بالـ 90 تعطي نفس العمل يعني nop

حينفذ التعليمه call eax يعني حيحفظ العنوان التالي (للرجوع اليه بعد تنفيذ الداله) وينتقل الى العنوان المحفوظ في eax

طبعا حيروح ينفذ الكود من عند My_Box يعني يظهر الرساله وبعدها يرجع تاني من بعد الـ call eax - عنوان الرجوع - بسبب كلمة ret بعد الرساله, يعدي على ال nop's , و يخرج من البرنامج

كام من عشره ؟؟؟

تم تعديل هذه المشاركة بواسطة Asm4all في 2 نوفمبر 2005 في 06:28

#6

الخدعة في الHint :D

EB ليست إستدعاء Call و إنما قفزة Jmp

db 0EBh
call eax

نوع من أنواع التمويه

تستخدم في الفيروسات

إستخدام Opcode الأمر الموالي في الأمر السابق لتصعيب الأمر لمن يحلل البرنامج

مثل

db 0e8h, 0f9h,0ffh,0ffh,0ffh;call $-7

أو أخر

  jmp $+4
  db 0Fh
  db D6h
d4baa0.gif
#7

السلام عليكم

طلعتو مش سهلين فى تحليل البرامج الاخ Asm4All جاب الاجابة الصحيحة فى اقل من 5 ساعات, انا اخذ مني يوم كامل لفهم ما يحدث, طبعاُ الكلام دا من سنتين لكن الان الحمد لله اصبحت افضل بكثير فى تحليل البرامج...

يلا عايزين مواضيع مشابهه حتى نحرك بها عضلات المخ الراكده

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

هذا الموضوع مغلق.

مواضيع مشابهة