خب برای شناسایی ویروس های جدید از روی توابع API غیرمجاز می تونی از تابع زیر کمک بگیری
که با پاوربیسیک نوشتم و تمامی توابع API همراه با نام DLL و آدرس اونا رو می ده
کد:
Function GetImports(wf As String,ByVal pd As Dword,ByVal de As Dword, ByVal ss As Dword,ByVal ba As Dword) As Long
#Register All
Local fo As Long
Local pa As Dword
Local pi As Dword
Local pt As Dword
Local dn As String
Local nm As String
Local n As Long
Local p As Long
Local ic As Long
Dim im(0) As String
Dim ia(0) As Dword
fo = FreeFile
Open "C:\Import.txt" For Output As #fo
For n = pd To pd + ss Step SizeOf(IMAGE_IMPORT_DESCRIPTOR)
pa = CvDwd(wf, n + 12)
If pa = 0 Then Exit For
dn = Mid$(wf, pa - de + 1, 100) & $Nul
dn = Left$(dn, InStr(dn, $Nul) - 1)
p = InStr(dn, ".")
If p Then dn = Left$(dn, p)
pa = CvDwd(wf, n) - de + 1
pt = ba + CvDwd(wf, n + 16)
Do
pi = CvDwd(wf, pa)
If pi = 0 Then Exit Do Else pi = pi - de + 3
nm = Mid$(wf, pi, 100) & $Nul : nm = Left$(nm, InStr(nm, $Nul) - 1)
im(ic) = dn & "." & nm : ia(ic) = pt
Incr ic : ReDim Preserve im(ic) : ReDim Preserve ia(ic)
Print# fo, Hex$(pt, 6) & $Tab & dn & nm 's = s & hex$(pt, 6) & " " & nm & $CrLf
pa = pa + 4 : pt = pt + 4
Loop
Next n
Close# fo
End Function
یه توضیحاتی رو کد بدم که بشه به ویژوال بیسیک تغییرش داد :
1-Register All توی کد ویژوال بیسیک وجود نداره پس حذفش کن
2-نوع های داده ای که توی ویژوال بیسیک نیست مثل Dword رو به Long تغییر بده
3-Local رو می تونی به Dim تغییر بدی
4-یه چیزایی هست که من نمی دونم توی ویژوال بیسیک چی می شه مثل SizeOf
5-ساختمان داده ای IMAGE_IMPORT_DESCRIPTOR رو از توی APIViewer ها پیدا کن
6-تابع CVDWD هم نوع های دیگه رو به Dword تبدیل می کنه که شما می تونید به Long تبدیل کنید
و CvWrd نوع های دیگه رو به Word تغییر می ده
7-Preserve یه کلمه کلیدی توی پاوربیسیکه که برای تعریف آرایه های دینامیکی با قابلیتهای
خیلی پیشرفته تره که بعد از ReDim می یاد و قابلیت کنترل حافظه و محل آرایه رو به ما می ده
که اینم نمی دونم توی ویژوال بیسیک چه جوریه ولی می تونید از همون ReDim خالی استفاده کنید
8-INCR یه چیزه دیگه برای آسون کردن کار با متغیرها و اشاره گر ها در پاوربیسیکه
که چون اینجا برای متغیر های شماره ای استفاده شده عدد یک رو به متغیر اضافه می کنه
--------------------------------------------------------------------------
پارامترها رو هم به ترتیب توضیح می دم :
1-آدرس فایل
2-Offset فایل به قسمت Data Section
3-مقداری برای کم کردن Offset های قسمت link
4-سایز Section (قسمت link)
5-محل شروع عملیات (از سره قسمت ImportTable)
---------------------------------------------------------------------------
فعلا این یه روش برای شناسایی ویروس های جدید و فایل های مشکوک
---------------------------------------------------------------------------
بهتره برای امنیت آنتی ویروس و همینطور پروسه های دیگه یه تکه کد حفاظتی به همه
پروسه ها تزریق کنی.