برای یاد گیری کرک یا به صورت کلی مهندسی معکوس نرم افزار ما نیازمند یادگیری یه سری پیش زمینه ها هستیم.اولینش آشنایی با زبان اسمبلی هستش,نیاز نیست که برنامه نویسی با این زبان رو یاد بگیرید همینکه با دستورات مهمش آشنا باشید می تونید کار خودتون رو پیش ببرید.
OllyDbg و IDA Pro دوتا از ابزارهای رایج دیس اسمبل کردن فایل های باینری
برای استخراج دستورات اسمبلی از زبان سطح ماشین هستند. پس عملکرد نرم افزار به زبان اسمبلی ازطریق این ابزارها قابل رویت هستش
در اینجا قصد آموزش کامل این زبان رو نداریم و فقط یک توضیح کلی در مورد بخش های اولیه و پرکاربرد این زبان را می دهیم.
پیش زمینه:
BIT : کوچکترین قسمت داده ای که یا 0 هستش یا 1
مثال: 00000001 = 1 00000010 = 2 00000011 = 3
BYTE: یک بایت حاوی 8 بیت است که می تواند 255 حالت را بسازد.(0 تا 255)
WORD: یک WORD حاوی 2 بایت یا 16 بیت است.و بیشترین حالت ممکن آن 0FFFFh (یا 65535) است.
DOUBLE WORD: حاوی 2 تا WORD یا به عبارتی 32 بیت است و بیشترین مقدار ممکن آن 0FFFFFFFF (یا 4294967295) است.
KILOBYTE: یک کیلوبایت برابر با 1024 بایت (32*32) است.
MEGABYTE: محتوی 1024*1024 یا 1,048,578 بایت است.
قسمت اول: رجیسترها
در IA-32 هشت رجیستر عمومی وجود داره:
EAX: Extended Accumulator Register
EBX: Extended Base Register
ECX: Extended Counter Register
EDX: Extended Data Register
ESI: Extended Source Index
EDI: Extended Destination Index
EBP: Extended Base Pointer
ESP: Extended Stack Pointer
البته بغیر از اینها رجیسترهای دیگه ای هم وجود داره مثل EIP که حاوی اشاره گری به دستور جاری هستش.البته لازم نیست زیاد نگران باقی رجیسترها باشید.
توجه کنید که همه نام ها با حرف E شروع شده اند که این بمعنی 32 بیتی بودن آنهاست.
- ۰ نظر
- ۲۸ دی ۹۳ ، ۰۸:۳۶
- ۳۲۷۵ نمایش