Apakah Aplikasi
Visual Basic itu sudah aman jika running dengan handle selain msvbvm* 0.dll????
Thinking again!!!
Oleh fokerlab [rachmadapry@gmail.com | www.friendster.com/fokerlab]
Sebenarnya, aplikasi Visual Basic dapat diketahui dengan
banyak cara, sebagian contohnya adalah :
1.) Jika aplikasi VB tsb, masih ting-ting artinya belum
di-ttuuuutt(di kompress maksudnya), maka dapat dicari headernya. Karena header
file VB berbeda dengan file lain. Kalo udah dikompress udah lain ceritanya.
2.) Melalui Handlenya yaitu msvbvm*0.dll. Namun apakah jika
pada badan aplikasi VB tsb karakter msvbvm* 0.dll sudah diganti akan aman dari
KillVB? (coba lihat http://www.jasakom.com/article.aspx?ID=902 yg ditulis oleh
mas Achmad Darmal) Jawabannya mudah sekali "Ya", karena KillVB hanya
mencari process yg berjalan dengan MSVBVM*, apalagi jika ditambahi dengan
mengkompressi terhadap filenya, sehingga walaupun aplikasi tsb dilihat melalui
notepad atau sejenisnya tidak akan terlihat handle MSVBVM* 0.DLL yg telah
diganti.
Dengan demikian mungkin para pembuat virus sudah
mempersiapkan virusnya dengan cara tsb agar tidak bisa diKill dgan KillVB.
Lalu bagaimana cara menutup aplikasi VB tsb? Mudah aja,
kmaren aku udah mbuat cara yg bisa dibilang sangat sederhana, aku buat cara ini
buat jaga-jaga aja. Begini caranya :
Perlu diketahui, salah satu hal yang menyamakan aplikasi VB
adalah "ThunderRT*Main", ya... itu adalah classname dari Focus
aplikasi VB. Mungkin sampai disini sudah cukup jelas.
Lalu bagaimana untuk mengambil semua aplikasi VB tsb? Mudah
aja, jika process bisa di-Enumerate maka kita Enumerate saja semua window yang
ada menggunakan code ini:
-----------------------------------------------------------------------------------------------------
Declare Function GetWindowText Lib "user32" Alias
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal
cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32"
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Function EnumAllWindows(ByVal TgtHwnd As Long, ByVal
Paramatre As Long) As Boolean
Dim Buff As
String, Win As Long
Win =
GetWindowTextLength(TgtHwnd)
'//Handlenya
jadiin string
Buff = Space(Win)
'//Mencari
text/caption window secara bertahap
GetWindowText
TgtHwnd, Buff, Win + 1
'//Masukan
text/caption window tsb pada listbox
listbox.AddItem
Buff
'//Kasih nilai
TRUE
EnumAllWindows =
True
End Function
-----------------------------------------------------------------------------------------------------
Lalu untuk memanggil fungsi diatas kita akan menggunakan
code ini :
-----------------------------------------------------------------------------------------------------
EnumWindows AddressOf EnumAllWindows, ByVal 0&
-----------------------------------------------------------------------------------------------------
Dengan cara diatas maka semua window akan dimasukkan dalam
listbox,
selanjutnya dari text/caption window yg udah kita masukkan
pada listbox, kita akan cari classnamenya. Jika ada window yang positif
classnamenya adalah "ThunderRT*Main" maka tutup aplikasi tsb.
Mungkin ada pertanyaan "Mengapa tidak memakai classname
'ThunderRT6FormDC'?"
Jawabannya mudah, karena Focus dari aplikasi VB itu selalu
mempunyai nama, tidak seperti form yang bisa diberi nama atau tidak. Dengan
demikian akan mempermudah dalam mencari windownya karena telah ada spesifikasi
nama.
Lalu untuk menutup aplikasi VB tersebut, kita akan gunakan
code ini :
-----------------------------------------------------------------------------------------------------
'//Pertama cari windownya dulu dari dumpernya (sebuah List)
HandleTarget=FindWindow("ThunderRT[*]Main",List.list(i))
'//Lalu berikan message pada window yang didapat
PostMessage HandleTarget, WM_NCDESTROY Or WM_DESTROY,
0&, 0&
-----------------------------------------------------------------------------------------------------
Dan jiika kamu ingin memodifikasi code diatas, ingat jangan
pernah gunakan parameter WM_CLOSE (yg
nilainya &H10) pada fungsi PostMessage, karena jika aplikasi VB itu
menggunakan code ini
-----------------------------------------------------------------------------------------------------
Private Sub Form_Unload(Cancel As Integer)
Shell App.Path
& "\" & App.EXEName & ".[Extensi]", [Paramater]
End Sub
-----------------------------------------------------------------------------------------------------
Maka akan muncul window baru, karena constanta WM_CLOSE =
& H10 sama dengan fungsi Unload pada form.
Sederhana sekalikan. Utk lebih jelasnya donlot sourcecodenya
di www.geocities.com/foker_rpg_m4/download/dudut.zip
Ato utk tool yg lebih lengkap ada di
www.geocities.com/foker_rpg_m4/download/gasak.zip (Utk menutup process VB seperti KillVB tekan
'Alt+Backspace', utk menutup Applikasi sperti cara diatas tekan 'Shift+Del ')
Tapi yang masih menjadi masalah adalah "Masa' VB makan
VB? Halal ga' ya?" Haghaghag…..
Nb :
Perhatian character [*] diganti sesuai versi dari versi
Visual Basic yang digunakan.
--- Diambil dari Jasakom.com
---
--- Edit by aredie ---
|