PDA

View Full Version : آموزش: آموزش نوشتن startup manager جهت شناسایی بد افزار ها



l4tr0d3ctism
یک شنبه 30 تیر 1392, 15:05 عصر
همون طور که می دونید خیلی از بد افزار ها وقتی میان داخل یک کامپیوتر یکی از کارهایی که انجام می دن اینه که خودش رو در داخل رجیستری Startup کنه که بتونه

بعد از هر بار Restart شدن ویندوز دوباره خودش رو اجرا کنه

نرم افزار های زیادی در این زمینه هست که متاسفانه نمی تونن کامل کامل تمام قسمت ها رو نشون بدن

به عنوان نمونه نرم افزار Security autorun که در حال حاضر جزء کاملترین هاست


http://tcpmonitor.altervista.org/SecurityAutorun/AutoRun.zip

اینجا می خوام آموزش نوشتن این جور برنامه ها رو براتون بگم

=========================================

اول از همه باید یک متغیر از نوع Microsoft.Win32.RegistryKey تعریف کنیم




Dim regKey As Microsoft.Win32.RegistryKey


حالا باید مشخص کنیم که از کدوم کلید از رجیستری استفاده می کنیم و از اون کلید اصلی وارد یکی از زیر کلید ها بشم و تمام مقادیر اون زیر کلید رو بدست بیارم

و داخل یک list box *اضافه کنم

اول از همه باید آدرس کلید اصلی رو به برنامه بدم

که خود مایکروسافت برای هر کلید یک اسم گذاری داره

Registry.ClassesRoot fv که برای دسترسی به کلید HKEY_CLASSES_ROOT

Registry.CurrentConfig که برای دسترسی به کلید HKEY_CURRENT_CONFIG

Registry.CurrentUser که برای دسترسی به کلید HKEY_CURRENT_USER

Registry.DynData که برای دسترسی به کلید HKEY_DYN_DATA

Registry.LocalMachine که برای دسترسی به کلید HKEY_LOCAL_MACHINE

Registry.PerformanceData که برای دسترسی به کلید HKEY_PERFORMANCE_DAT

Registry.Users که برای دسترسی به کلید HKEY_USERS

==================================


من اینجا می خوام به یکی از قسمت های کلید HKEY_LOCAL_MACHINE دسترسی پیدا کنم

و بعد

می خوام از این کلید وارد زیر کلید *SOFTWARE\Microsoft\Windows\CurrentVersion\Run بشم

اینجا یک متغیر از نوع String می زنم و مسیر زیر کلید رو بهش می دم





Dim valueaddress As String = SOFTWARE\Microsoft\Windows\CurrentVersion\Run



و به متغیر regkey میگم که از کلید اصلی HKEY_LOCAL_MACHINE زیر کلید valueaddress رو باز کن





regKey = Registry.LocalMachine.OpenSubKey(valueaddress, True)




خوب حالا می گم که لیست نام مقادیر زیر کلید رجیستری رو داخل یک listbox*بزار





For i = 0 To UBound(regKey.GetValueNames())
ListView1.Items.Add(regKey.GetValueNames(i))
Dim tmp As String = ReadString(valueroot, valueaddress, valuename)
ListView1.Items(Count).SubItems.Add(tmp)

Count += 1
Next




تو خط اول اومدم گفتم که با استفاده از حلقه for بر اساس انديس آخرين عنصر تعداد مقادیر داخل زیر کلید برو سراغ نام مقادیر داخل زیر کلید

خط دوم اومدم گفتم که اسامی نام مقادیر رو در listbox1 اضافه کن

و تو خط سوم گفتم حالا که یک متغیر با نام TMP*تعریف کن و از تابع read string استفاده کن که بتونه مقدار value که داخل زیر کلید هست رو بهمون نشون بده

که 3 قسمت براش نیازه اول نام کلید اصلی بعد نام زیر کلید و بعد نام مقدار داخل زیر کلید که من هر کدوم از اونها رو در داخل یک متغیر می زنم که زیاد شلوغ نشه





valueaddress = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
valueroot = "LocalMachine"



که این کد باید بالای حلقه for قرار بگیره

و بعد میام اون متغیر ها رو به جای گذاشتن مقادیر بهش میدم

و در خط چهارم هم اومدم متغیر TMP که همون مقادیر داخل Value ها هست رو در listbox اضافه می کنم

خط پنجم هم برای اضافه کردن دیگر مقادیر در خط بعدی listbox هست