در مورد باگ ها بدانیم !

توی این مطلب می خواهیم در مورد باگ ها و بحث دیباگینگ کمی صحبت کنیم. با ما همراه باشید.

Bug چیست؟

باگ مشکلی است که در یک برنامه رخ داده و باعث از کار انداختن کلی آن یا اجرا نکردن دستور یا دستورات بعدی به صورت ناقص یا کامل می گردد.

باگ ها چگونه بوجود می آیند؟

  1. برنامه نویسان
  2. کامپایلر

اکثر باگ ها از اشتباهات برنامه نویسان در کد ها بوجود می آیند و تعداد بسیار کمی از آنها نیز توسط کامپایلرها و به دلیل تولید کد اشتباه، ایجاد می شوند.

باگ یعنی چه؟(نام آن از کجا آمده است)؟

واژه ی Bugبه معنای حشره از آن زمانی رایج شد که پس از انجام بررسی های متعدد در یکی از کامپیوترهای نخستین به درستی کار نمی کرد و  معلوم شد یک حشره (گیر) در میان اجزای آن گیر کرده است و علت این مشکل بوده است.

پس از برداشتن این حشره کامپیوتر دوباره شروع به کار کردن کرد.با این حال از آن موقع به خطارا های کامپیوتری Bug و  پیدا کردن و رفع این مشکلات نیز debuggingمیگویند.

09September_1

(تصویری از حشره در نخستین کامپیوتر)

اشکال زدا یا Debugger چیست؟

نرم افزار برای پیدا کردن عیب ها و اشکال زدایی از دیگر  برنامه ها می باشد.با این نرم افزار می تواند برنامه مورد نظر را خط به خط اجرا کرد، در قسمتی از آن توقف نمود. وضعیت آن را در شرایط مختلف بررسی کرد، کد ها را اصلاح نمود.دیباگر ها می توانند ابزار  خوبی برای توسعه دهندگان نرم افزار باشند.

کاربرد آن در مهندسی معکوس چیست؟

این کار با فرآیند پیدا کردن و اصلاح کردن باگ ها صورت می گیرد اما می توان از آن به عنوان ابزار قدرتمند در مهندسی معکوس استفاده کرد.. دیباگرها یکی از قویترین و بهترین ابزارها در مهندسی معکوس فایلهایی هستند که سورس آنها را در اختیار ندارید!. این ویژگی دیباگر ها زمانی مشخص می شود که فرضا  میخواهید یک بدافزار که سورس آن در اختیار نیست، تحلیل نمایید!.

علاوه بر آن،یک دیباگر خوب وضعیت فعلی ثباتهای CPU ،محتویات حافظه، پشته و… را نیز به شما نمایش میدهد.

اشکال زدا برای استفاده در مهندسی معکوس باید چه ویژگی هایی داشته باشد؟

نشانه توقف سخت افزاری ، نرم افزاری:

*BreakPoints یکی از مهمترین ویژگی در دیباگر ها به شمار می آید.نقاط توقف سخت افزاری، ویژگی خاصی از CPU می باشدد که آن اجازه ی پردازش می دهند و هنگامی که آدرس خاصی مورد بررسی و دسترسی قرار می گیرد، برنامه متوقف شده و باقی کار به دیباگر واگذار می شود.

نقاط توقف نرم افزاریکد هایی هستندکه باعث می شوند تا پردازنده پس مشاهده آنها کنترل را به دیباگر دهد. نکته:کدها به برنامه در حال دیباگ اضافه می شوند.

*Break در انگلیسی به معنای ترمز، و Point به معنای نقطه یا نشانه است. برای مشخص بودن معنی این اصطلاح به آن نقاط توقف می گویند.

داشتن یک Disassembler قدرتمند:

وظیفه آن، این است که کد های باینری را به دستورالعمل های اسمبلی ترجمه کند.  نمایش واضح کد و تشخیص این که کدام بخش از کد به کجا مربوط می شود یا یک دستور خاص از کجا فراخوانی می شود، ضروری است. توانایی شناسایی و جدا کردن Data از Code زمانی که با هم ترکیب شده اند و جدا کردن آنها آسان نیست! نیز یکی از ویژگی های دارای اهمیت است.

نمایش ثباتها(Stability) و حافظه:

یکی از ویژگی های مهمی است که یک دیباگر بایددارا باشد اینکه ثباتهای مهم CPU ،بخشهایی از حافظه و پشته را به همراه رمزگشایی آدرسها و اطلاعاتی که در آن قرار دارد نمایش دهد. همچنین تغییراتی که روی آنها در حال انجام است را نیز مشخص کند.

اطلاعات processها:

یکی از ویژگی های که باید به آنها اشاره کنیم می باشد. دیباگر با دداشتن این ویژگی عمل کرد بهتری خواهد داشت.برای مثال می توان به ماژول های بارگذاری شده و وضعیت در حافظه Thread اشاره کرد. در عین حال اطلاعات زیادی برای گفتن وجود دارد.

از کدام دیباگر استفاده کنم؟

OllyDbgیکی از برنامه های اشکال زدا می باشد که برای تحلیل کد در سطح اسمبلرِ ۳۲بیتی از آن استفاده میشود. این نرم افزار ویژگی های گفته شده را دارا می باشد و ابزار خوبی برای مهندسی معکوس نیز هست.

 

ارسال نظر

ایمیل شما منتشر نخواهد شد. پر کردن ورودی ها الزامی است. *

*

بیست − 4 =