PDA

View Full Version : خواندن آدرس یک اینتراپت



zoncpp
دوشنبه 15 مرداد 1386, 10:44 صبح
LIDT - Load Interrupt Descriptor Table Address
SIDT - Set Interrupt Descriptor Table Address
آیا این دستورات در Ring0 اجرا می شوند؟
در برنامم چطور می تونم به Ring0 سوئیچ کنم؟



push edx
sidt [esp-2]
pop edx
mov ebx, [edx]

من این کد رو نوشتم برای خواندن آدرس اولین interrupt، ولی در خط آخر دچار اشکار می شود و گویا edx به آدرس غیر مجاز اشاره می کند!!!

Inprise
دوشنبه 15 مرداد 1386, 11:26 صبح
از این شروع کن :http://www.codeproject.com/system/interrupthook.asp

zoncpp
یک شنبه 21 مرداد 1386, 09:06 صبح
تمام جستجوهای من به نوشتن یک درایور و کار در سطح kernel می رسد، ولی من اصرار دارم این کار رو در برنامه خودم که یک برنامه user mode هست انجام بدم.
حدس می زنم برنامه OllyDbg برای plugin جلوگیری از Trap Flag نیز همین کار را کرده.
آیا راهی برای کمک به من به نظرتون نمی رسه؟

illegalyasync
یک شنبه 21 مرداد 1386, 10:24 صبح
ممکنه اول توضیح بدی چیکار میخوای بکنی ؟ اینطوری بهتر میشه فکر کرد

Inprise
چهارشنبه 24 مرداد 1386, 02:34 صبح
ولی من اصرار دارم این کار رو در برنامه خودم که یک برنامه user mode هست انجام بدم.

IDT روی User-mode فقط تحت ویندوز 95-8 در دسترس هست . روی خانواده NT باید درایور بنویسی .

zoncpp
چهارشنبه 24 مرداد 1386, 11:23 صبح
ممکنه اول توضیح بدی چیکار میخوای بکنی ؟ اینطوری بهتر میشه فکر کرد

من می خوام آدرس یک اینتراپت مشخص رو بگیرم (مثلا اینتراپت 5 ) و آدرس آن رو تغییر بدم به این صورت که اول تابعی که خودم نوشتم اجرا بشه (درصورت فراخوانی این اینتراپت) و بعد آدرس اصلی خود اینتراپت اجرا بشه.
مثلا حدس می زنم که ollyDbg (با اطلاعات ناقصی که از این برنامه دارم) برای جلوگیری از تغییر Trap Flag آدرس اینتراپت مربوطه را تغییر داده و در تابع خود دائم این Flag را برابر صفر می کند، در نتیجه هنگام کار با ollyDbg همیشه این flag برابر صفر است.
ولی از آنجا که ollyDbg از فایل sys استفاده نمی کنه (کنار exeی OllyDbg فایل sys وجود ندارد، تنها یک dll مربوط به pluginها باید باشد) پس حدس می زنم که راهی غیر از نوشتن فایل sys وجود دارد. ممکنه در همون dll مربوط به pluginها ، این کار انجام شده باشه؟
یعنی چه راهی وجود داره؟؟؟؟!!!!!!!!!!!!!!

illegalyasync
چهارشنبه 24 مرداد 1386, 15:46 عصر
کاری که شما میخوای انجام بدی دقیقا همون کاری هست که روتکیتها انجام میدن . دستکاری IDT جوابتونو آقای اینپرایز دادن

یادمه ویروس CIH روی ویندوز 98 با دستکاری IDT هم فایلها آلوده میکرد هم بایوس را خراب میکرد اما بعد از ویندوز 98 دسترسی به IDT فقط از کرنل ممکن هست

zoncpp
پنج شنبه 25 مرداد 1386, 08:13 صبح
پس ollyDbg با وجود dllی در کنارش (plugin)، می تونه این کار رو انجام بده. میشه در dll سطح کرنل کار کرد. مثلا dllی نوشت که کار یک درایور رو هم انجام بده؟؟؟!!!!!!!!!!!!!!!!!!!!!!

illegalyasync
پنج شنبه 25 مرداد 1386, 23:05 عصر
نه ollydbg هم چنین کاری انجام نمیده