نمایش دمو از مفهوم Thread Context
مفهوم Thread Context در ویندوز به دادههای ضروری اشاره دارد که وضعیت کنونی Thread را در زمان اجرا در پروسه تعریف میکند. این اطلاعات شامل مقادیر Registerها مثل RIP برای نگهداری آدرس بعدی که باید کد از آن اجرا شود، اشارهگرهای Stack و مقادیر Flagها برای مشخص کردن نتیجهی اجرای دستور قبلی و وضعیت CPU هستند.
زمانیکه CPU از یک Thread گرفته شده و Thread دیگری برای اجرا انتخاب میشود، این اطلاعات توسط سیستمعامل ذخیره میشوند که پس از اینکه CPU مجدد در اختیار Thread جاری قرار گرفت، اجرا بدون مشکل بتواند ادامه پیدا کند. این عملیات همان چیزی است که در مباحث سیستمعامل به آن با عنوان Context Switching اشاره میشود. (دقت کنید که در ویندوز پروسه اجرا نشده و فقط یک Container برای فراهم کردن یک فضای مشترک و دسترسی به یکسری منابع است. آن چیزی که در ویندوز اجرا میشود Threadها هستند.)
در این ویدئو که بخشی از یکی ازکلاسهایم است، ابتدا به کمک برنامه نویسی به Thread Context دسترسی پیدا کرده و به کمک ابزارهای ProcessExplorer و WinDbg جزئیات و شیوهی کار Thread را بررسی میکنیم. سپس تاثیر تغییر دادن Context و جایگزین کردن RIP و تغییر مسیر اجرای Thread را بررسی میکنیم که با یکی از روشهای Injection کد در Thread آشنا شویم.
لینک ویدئو در یوتیوب:
https://youtu.be/51strgKxOUo
لینک ویدئو در آپارات:
https://aparat.com/v/wuHyk
#ShortWinInternals #windows #internals #cpp #programming #thread #context
Post #95
3.74K