رفتن به مطلب

نوشتن keylogger نرم‌افزاری


ارسال های توصیه شده

نوشتن keylogger نرم‌افزاری

در مقاله

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
قابلیت‌ها و نحوه کار این ابزار مورد بررسی قرار گرفته، انواع موجود این ابزار معرفی شدند. در این مقاله به معرفی ساختار keylogger‌های نرم‌افزاری و روش نوشتن برنامه‌های keylogger پرداخته می‌شود.

Windows hook

هسته بسیاری از keyloggerها با استفاده از مکانیزم Windows hook بنا شده است. Hook نقطه‌ای در مکانیزم مدیریت پیام‌های سیستم ویندوز است که برنامه‌های مختلف می‌توانند با نصب یک زیربرنامه ترافیک پیام‌ها را قبل از رسیدن به برنامه مقصد شنود نمایند. Hook پانزده نوع دارد که هر یک از آنها به رویدادی خاصی از سیستم مرتبط هستند. پروتوتایپ hook به صورت زیر است:

 

image099.jpg

زنجیره hook‌ لیستی از اشاره‌گرها به زیربرنامه‌های hook‌ است. همزمان با ایجاد پیام جدیدی از یک نوع hook خاص، سیستم پیام را یک به یک به همه زیربرنامه‌هایی که در زنجیره hook‌ به آنها اشاره شده است ارسال می‌نماید.

یک زیربرنامه hook‌ می‌تواند بر ارسال پیام در زنجیره hook‌ نظارت داشته و یا آن را تغییر دهد. علاوه ‌بر این امکان ممانعت از رسیدن پیام به زیربرنامه بعدی در لیست و یا به برنامه مقصد وجود دارد.

تابع SetWindowsHookEx که پروتوتایپی مشابه زیر دارد یک زیربرنامه در ابتدای زنجیره hook قرار می‌دهد.

image100.jpg

نمونه‌های مختلفی از متن برنامه‌های Keylogger از سایت

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
قابل دریافت است. در صورتی آشنایی با طرز کار windows hooks نوشتن keylogger‌ دشوار نبوده و نیاز به کد زیادی ندارد. تابع InstallHook که از یکی از keyloggerها برداشته شده است فایلی که برای ثبت گزارشات استفاده می‌شود را مشخص نموده، زیربرنامه ثبت فعالیت‌های صفحه‌کلید KeyboardProc را در زنجیره hook نصب می‌کند. این کار با فراخوانی تابع SetWindowsHooksEx انجام می‌شود.

image101.jpg

در شرایطی که کلا ۱۵ نوع hook وجود دارد، WH_KEYBOARD و WH_MOUSE برای نوشتن keylogger ضروری هستند. در اینجا WH_KEYBOARD شرح داده می‌شود و شرح سایر انواع hook‌ در سایت

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
قابل دسترسی است.

WH_KEYBOARD

این hook برنامه‌ها را قادر می‌سازد که بتوانند ترافیک پیام‌های WM_KEYDOWN و WM_KEYUP که توسط GetMessage و PeekMessage بازگردانده می‌شوند را مانیتور نمایند. هرگاه یکی از توابع GetMessage و PeekMessage فراخوانی شوند و یک پیام مربوط به صفحه کلید (WM_KEYUP یا WM_KWYDOWN) فراخوانی شود، سیستم‌عامل اقدام به فراخوانی این زیربرنامه می‌نماید. پروتوتایپ تابع به شکل زیر است:

image102.jpg

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

image103.jpg

هرگاه رویدادی رخ ‌دهد که توسط hook خاصی مانیتور می‌شود، سیستم عامل اولین زیربرنامه در زنجیره hook را فراخوانی می‌کند. هر زیربرنامه hook در لیست تصمیم می‌گیرد که رویداد را به زیربرنامه بعدی ارسال نماید یا خیر. در صورتی که بنا بر ارسال رویداد باشد از تابع CallNextHookEx استفاده می‌شود.

مخفی کردن keylogger

روش‌های مختلفی برای جلوگیری از نمایش نام یک keylogger فعال در مدیر وظیفه (task manager) یا لیست پردازنده وجود دارد. یک از این روش‌ها باز کردن یک پنجره مخفی در هنگام روشن شده دستگاه و مقداردهی مناسب به پارامتر‌های لازمه به صورت زیر است.

image104.jpg

  • Like 2
لینک به دیدگاه
×
×
  • اضافه کردن...