Menerapkan pemantauan registri menggunakan Delphi5.0Zhu Hongtao, Pusat Informasi, Rumah Sakit Xiangya Kedua, Universitas Pusat Selatan Dengan popularitas Internet yang berkelanjutan, keamanan jaringan semakin menarik perhatian. Selain virus komputer, berbagai perangkat lunak peretas, perangkat lunak kendali jarak jauh, dll. terus bermunculan di Internet, membuat orang semakin khawatir dengan mesin mereka. Keberagaman dan pembaruan terus-menerus dari perangkat lunak jenis ini membuat perlindungan mesin Anda sepenuhnya tidak mungkin hanya dengan mengandalkan beberapa perangkat lunak anti-virus saja. |
Apakah ada cara yang baik untuk mencegah pemasangan perangkat lunak dari sumber yang tidak dikenal di mesin saya? Jawabannya adalah dengan memperhatikan perubahan pada file sistem utama. Seperti yang kita ketahui bersama, jika suatu program ingin berjalan secara otomatis saat Windows dijalankan, umumnya ada tiga cara: |
1. Tambahkan pintasan ke grup [Startup] pada menu Start |
2. Tambahkan item terkait ke Win.ini |
3. Tambahkan nilai kunci yang menunjuk ke diri Anda sendiri di bawah kunci utama HKEY_Local_Machine/SoftWare/Microsoft/Windows/CurrentVersion/Run di registri. |
Metode pertama terlalu jelas dan mudah dikenali. Oleh karena itu, program peretas umum menggunakan dua metode terakhir untuk memulai sendiri. Penulis di sini memperkenalkan monitor registri sederhana yang saya tulis sendiri, yang digunakan untuk memantau perubahan nilai kunci dalam registri secara real time untuk menemukan program yang tidak diketahui asalnya. Pembaca yang tertarik dapat lebih meningkatkannya atas dasar ini. |
Ide pemrograman |
Program ini dikembangkan menggunakan Delphi5.0. Delphi adalah alat pengembangan program Windows visual cepat yang diproduksi oleh Borland Company. Sangat kuat dan mudah digunakan. Program ini menggunakan pengatur waktu untuk membandingkan registri setiap waktu tertentu. Saat program dimulai, program menyimpan cadangan data dari nilai kunci registri asli, dan kemudian membandingkannya dengan nilai kunci saat ini secara teratur. Jika ada perubahan yang ditemukan, pengguna akan diminta untuk memeriksanya. |
Implementasi program |
1. Buat Proyek baru di Delphi dan ganti nama Form1 menjadi FormMain |
2. Tempatkan TTimer kontrol pengatur waktu di FormMain dan simpan Proyek sebagai PiRegWatch.Dpr |
3. Ubah kode di PiRegWatch.Dpr: |
aplikasi.Inisialisasi; |
Aplikasi.CreateForm(TFormMain, FormMain); |
//Jangan tampilkan jendela utama saat dimulai |
Aplikasi.ShowMainForm:=Salah; |
Aplikasi.Jalankan; |
Tambahkan beberapa objek ke FormMain. |
ObjekJenisDeskripsi |
RegTregistry digunakan untuk mengakses registri |
IniFileTiniFile digunakan untuk menyimpan data registry asli |
LogTstringListLog digunakan untuk mencatat perubahan |
RegKeysTstringList digunakan untuk menyimpan nama kunci utama di bawah cabang Run |
4. Simpan data registri asli di acara FormMain:OnCreate Kode utamanya adalah sebagai berikut: |
… |
self.Reg:=TRegistry.Create; |
dengan self.Reg lakukan |
mulai |
Kunci Akar:=HKEY_Local_Machine; |
Jika OpenKey('Perangkat Lunak/Microsoft/Windows/Versi Saat Ini/Jalankan', salah) |
Kemudian |
mulai |
RegKeys:=TStringList.Buat; |
GetValueNames(RegKeys); //Dapatkan semua nama kunci utama di bawah Jalankan |
jika bukan self.IniFile.SectionExists('RunList') maka //Jika tidak ada data yang disimpan |
mulai |
untuk i:=0 hingga Regkeys.Count-1 do //Simpan data asli |
jika (mandiri.Reg.GetDataType(RegKeys.Strings[i])=rdString) |
atau(self.Reg.GetDataType(RegKeys.Strings[i])=rdExpandString) |
lalu mulai |
nilai:=diri.Reg.ReadString(RegKeys.Strings[i]); |
self.IniFile.WriteString('RunList',RegKeys.Strings[i],nilai); |
akhir; |
akhir; |
akhir; |
akhir; |
… |
5. Tambahkan kode untuk membandingkan registri di acara TTimer1.OnTmer. Kode utamanya adalah sebagai berikut: |
prosedur TFormMain.Timer1Timer(Pengirim: TObject); |
var i: bilangan bulat; |
RegVal,IniVal:string; |
mulai |
self.Timer1.Enabled:=Salah; |
mandiri.Reg.GetValueNames(RegKeys); |
untuk i:=0 hingga RegKeys.Count-1 do //Periksa nilai kunci yang baru ditambahkan dan diubah |
jika (mandiri.Reg.GetDataType(RegKeys.Strings[i])=rdString) |
atau (self.Reg.GetDataType(RegKeys.Strings[i])=rdExpandString) |
lalu mulai |
RegVal:=self.Reg.ReadString(RegKeys.Strings[i]); |
IniVal:=self.IniFile.ReadString('RunList',RegKeys.Strings[i],''); |
jika RegVal<>IniVal maka |
mulai |
self.LogMsg('Penambahan Item:'+RegKeys.Strings[i]+'='+RegVal); |
self.IniFile.WriteString('RunList',RegKeys.Strings[i],RegVal); |
mencoba |
//meminta pengguna |
SendMsg('ABC','','Registri telah diubah: item baru'+RegKeys.Strings[i]+'='+RegVal); |
Akhirnya |
akhir; |
akhir; |
akhir; |
self.IniFile.ReadSection('RunList',RegKeys); |
untuk i:=0 hingga RegKeys.Count-1 do //Periksa nilai kunci yang dihapus |
mulai |
IniVal:=self.IniFile.ReadString('RunList',RegKeys.Strings[i],''); |
jika self.Reg.ValueExists(RegKeys.Strings[i]) dan |
((self.Reg.GetDataType(RegKeys.Strings[i])=rdString) |
atau (self.Reg.GetDataType(RegKeys.Strings[i])=rdExpandString) ) |
Kemudian |
RegVal:=self.Reg.ReadString(RegKeys.Strings[i]) |
kalau tidak |
RegVal:=''; |
jika (IniVal<>'') dan (RegVal='') maka |
mulai |
self.LogMsg('Item Del:'+RegKeys.Strings[i]+'='+IniVal); |
self.IniFile.DeleteKey('RunList',RegKeys.Strings[i]); |
mencoba |
SendMsg('ABC','','Registry diubah: item dihapus'+RegKeys.Strings[i]+'='+IniVal); |
Akhirnya |
akhir; |
akhir; |
akhir; |
self.IniFile.UpdateFile; |
self.Timer1.Enabled:=Benar; |
akhir; |
6. Lakukan pelepasan objek dan pekerjaan pembersihan yang diperlukan di acara FormMain:OnClose |
procedure TFormMain.FormClose(Pengirim: TObject; var Action:TCloseAction); |
mulai |
jika Ditugaskan(self.Reg) maka self.Reg.Free; |
jika Ditugaskan(self.IniFile) maka self.IniFile.Free; |
jika Ditugaskan(self.LogFile) maka self.LogFile.Free; |
jika Ditugaskan(self.RegKeys) maka self.RegKeys.Free; |
akhir; |
Setelah dioperasikan secara sebenarnya, program ini memang dapat memainkan peran tertentu dalam menemukan program yang tidak diketahui asalnya. Tentu saja fungsinya juga sangat tunggal. Jika ingin lebih ditingkatkan dan ditambahkan perubahan pada file kunci lainnya dari sistem pemantauan, efeknya akan lebih baik. Berharap untuk berkomunikasi dengan pembaca yang tertarik. |