ANALISA DAN PERANCANGANGAN APLIKASI ANTIVIRUS BACKDOOR DENGAN MENGGUNAKAN VISUAL BASIC 6.0
EKA DIFA ANDIKA 01502- 021
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2009
i
ANALISA DAN PERANCANGAN APLIKASI ANTIVIRUS BACKDOOR MENGGUNAKAN VISUAL BASIC 6.0
Laporan Tugas Akhir
Diajukan Untuk Melengkapi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
Disusun oleh EKA DIFA ANDIKA 01502-021
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA JAKARTA 2009
ii
LEMBAR PENGESAHAN
Yang bertanda tangan di bawah ini menyatakan bahwa Laporan Tugas Akhir dari mahasiswa berikut ini : Nama
: Eka Difa Andika
NIM
: 01502-021
Fakultas
: Ilmu Komputer
Program Studi : Teknik Informatika Judul
: Analisa dan Perancangan Aplikasi Antivirus untuk Backdoor Menggunakan Visual Basic 6.0”.
Yang bertanda tangan di bawah ini, menyatakan bahwa Laporan Tugas Akhir dari mahasiswa tersebut di atas, telah diuji dan dipresentasikan pada sidang tugas akhir serta telah disetujui dan disahkan sebagai Laporan Tugas Akhir. Menyetujui,
( Raka Yusuf, ST,. MKom ) Pembimbing Mengesahkan,
Mengetahui,
( Devi Fitrianah, S,.Kom MTI ) Koordinator Tugas Akhir
( Abdusy Syarif, ST,. MT ) Ketua Program Studi Teknik Informatika
ii
LEMBAR PERNYATAAN
Yang bertanda tangan di bawah ini : Nama
: Eka Difa Andika
NIM
: 01502-021
Fakultas
: Ilmu Komputer
Program Studi : Teknik Informatika Menyatakan bahwa Laporan Tugas Akhir dengan judul :
Analisa dan Perancangan Aplikasi Antivirus untuk Backdoor Menggunakan Visual Basic 6.0”. Adalah hasil dari penelitian yang dilakukan oleh penulis sendiri, dan bukan merupakan jiplakan, kecuali kutipan-kutipan yang berasal dari sumber-sumber yang tercantum pada Daftar Pustaka.
Jakarta, Agustus 2009
Eka Difa Andika
iii
ABSTRAK
Umum bagi pengguna komputer, perlindungan terhadap ancaman virus backdoor dianggap telah memadai dengan dipergunakannya perangkat lunak (software) anti virus. Namun virus backdoor seperti halnya trojan horse, virus, spyware dan sebagainya, yang juga dikategorikan sebagai program yang berbahaya (malicious software), memiliki beberapa karakteristik yang berbedabeda sesuai dengan teknik pemrograman dan tujuan dari si pembuat backdoor. Sehingga proteksi sistem dengan hanya mengandalkan keampuhan software anti virus saja, belum dapat dianggap mencukupi. Untuk itu, masih sangat diperlukan langkah-langkah perlindungan yang menyeluruh, yang didasarkan atas informasi mengenai karakteristik dan dampak negatif dari penyebaran backdoor pada komputer tersebut. Tulisan ini akan mencoba membahas tentang pembuatan aplikasi trojan remover untuk menangani sistem dari ancaman virus backdoor. Aplikasi ini dilengkapi dengan pengelolaan data signature sendiri, sehingga memudahkan pengguna dalam menambahkan data signature dari backdoor.
Kata kunci : Backdoor, Antivirus, Signature
iv
ABSTRACT
Generally for computer user, protection for threat of computer backdoor has been considered suitable with the use of antivirus software. But computer backdoor such as Trojan horse, virus, spyware and so on, that also categorized as dangerous program (malicious software) have a few different of characteristic like programming technique and the purpose from backdoor writer. So protect system with only to rely on the power of antivirus software, not yet to able considered enough. For that, still have necessary to step by step to protect fully, that found up to information about characteristic and negative collide from spread computer backdoor. The paper of this try to discussed to make antivirus application for protection the system from threat of computer backdoor. This application equipped management data signature, so make easy for user to add data signature from backdoor.
Keyword: computer backdoor, antivirus, signature
v
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Allah SWT yang telah memberikan hidayah dan rahmat-Nya sehingga penulis dapat menyelesaikan laporan tugas akhir yang berjudul ”Aplikasi Antivirus Backdoor Menggunakan Visual Basic 6.0” dengan baik. Laporan Tugas Akhir ini ditulis untuk melengkapi persyaratan mencapai gelar sarjana strata satu (S1) Program Studi Teknik Informatika Fakultas Ilmu Komputer Universitas Mercu Buana. Dalam menyelesaikan laporan Tugas Akhir ini, penulis banyak mendapat bantuan berupa dukungan, sumbangan pikiran dan bimbingan yang sangat besar artinya. Untuk itu dalam kesempatan ini penulis mengucapkan terima kasih kepada : 1. Kedua orang tua tercinta hususnya ibu yang tanpa henti mengalirkan do’a untuk keselamatan dan keberhasilan penulis serta memberikan dukungan dan semangat baik spiritual, moril dan materil sehingga tugas ini dapat selesai pada waktunya. 2. Untuk adikku tercinta Didi Prayudi yang selalu memberikan dukungan dan semangat supaya penulis bisa menyelesaikan laporan tugas akhir. 3. Bapak Abdusy Syarif, ST., MT selaku Ketua Program Studi Teknik Informatika Universitas Mercu Buana.
vi
4. Bapak Raka Yusuf, ST., MKom selaku Dosen Pembimbing Tugas Akhir yang telah banyak membantu penyusun dalam membuat laporan tugas akhir ini sampai selesai. 5. Untuk Yuli Yanti penulis ucapkan terima kasih telah membantu dan memberikan dukungan supaya penulis dapat menyelesaikan laporan tugas akhir ini. 6. Untuk teman - teman seperjuangan Teknik Informatika angkatan 2002, yoko, candra, ardi, dede, sofi, rian dan anak kosan belakang terima kasih atas dukungannya. Semoga Allah SWT memberikan dan melimpahkan rahmat dan karunia-Nya atas segala bantuan yang telah diberikan kepada penulis. Akhir kata penulis mengharapkan tulisan ini dapat memberikan manfaat bagi penulis khususnya dan pembaca pada umumnya. Penulis menyadari bahwa tulisan ini tidak lepas dari kekurangan. Atas saran dan kritik yang membangun penulis mengucapkan terima kasih.
Jakarta, Agustus 2009
Eka Difa Andika
vii
DAFTAR ISI Halaman JUDUL.............................................................................................................
i
LEMBAR PENGESAHAN DOSEN..............................................................
ii
LEMBAR PERNYATAAN ...........................................................................
iii
ABSTRAK......................................................................................................
iv
ABSTRACT ...................................................................................................
v
KATA PENGANTAR...................................................................................
vi
DAFTAR
ISI..................................................................................................
viii DAFTAR GAMBAR .....................................................................................
xii
DAFTAR TABEL .........................................................................................
xiv
BAB I PENDAHULUAN 1.1 Latar Belakang .............................................................................
1
1.2 Ruang Lingkup ............................................................................
2
1.3 Tujuan Pembahasan .....................................................................
3
1.4 Batasan Masalah ...........................................................................
3
1.5 Metodologi ...................................................................................
4
1.6 Sistematika Penulisan ...................................................................
5
BAB II LANDASAN TEORI 2.1 Model Sekuensial Linier ...............................................................
viii
6
2.2 Unified Modelling Language (UML) ...........................................
8
2.2.1 Diagram Use Case ...............................................................
9
2.2.2 Diagram Sekuensial ............................................................
12
2.2.3 Diagram Aktifitas ..............................................................
14
2.3 Malware (Malicious Software) ...................................................
15
2.4 Backdoor Komputer ...................................................................
16
2.4.1 Struktur Backdoor..............................................................
17
2.4.2 Kemampuan Dasar Backdoor ...........................................
19
2.4.3 Siklus Hidup Backdoor .....................................................
21
2.5 Anti Virus....................................................................................
22
2.5.1 Program Removal...............................................................
24
2.5.1.1 Launcher File Removal.............................................
26
2.5.1.2 Infector File Removal ...............................................
27
2.5.2 Definition File.....................................................................
29
2.6 Registry .......................................................................................
30
2.6.1 Struktur Dasar Registry.......................................................
31
2.6.2 Bagian Registry dan Fungsinya ..........................................
32
2.6.3 Value ...................................................................................
33
BAB III ANALISIS DAN PERANCANGAN 3.1 Analisis .........................................................................................
35
3.1.1 Diagram Use Case ...............................................................
36
3.1.2 Diagram Aktifitas ................................................................
42
ix
3.1.2.1
Diagram
Aktifitas
Untuk
Use
Case
Melakukan
Pendeteksian ........................................................
43
3.1.2.2 Diagram Aktifitas Untuk Use Case Mengelola Data Signature ............................................................... 3.1.2.3
Diagram
Aktifitas
Untuk
Use
Case
47
Melakukan
Pencegahan dan Penggagalan .............................
49
3.1.3 Diagram Sekuensial ............................................................
53
3.1.3.1 Diagram Sekuensial Untuk Use Case Melakukan Pendeteksian ........................................................
53
3.1.3.2 Diagram Sekuensial Untuk Use Case Mengelola Data Signature ..............................................................
54
3.1.3.3 Diagram Sekuensial Untuk Use Case Melakukan Pencegahan dan Penggagalan...............................
55
3.2 Perancangan Tampilan .................................................................
56
3.2.1 Rancangan Menu Pendeteksian ............................................ 56 3.2.2 Rancangan Menu Signature..................................................
58
3.2.3 Rancangan Menu Option.......................................................
59
3.2.4 Rancangan Tampilan Form CRC .........................................
59
3.2.5 Rancangan Tampilan Form Report......................................
60
3.2.6 Rancangan Tampilan Form Konfigurasi Windows............... 61 3.2.6 Rancangan Tampilan Form Lihat Registry...........................
x
62
BAB IV IMPLEMENTASI DAN PENGUJIAN 4.1 Implementasi ................................................................................
63
4.1.1 Pengkodean..........................................................................
63
4.1.2 Antarmuka............................................................................
76
4.2 Pengujian ......................................................................................
80
4.2.1 Metode Pengujian ................................................................
82
4.2.2 Pengujian ..............................................................................
81
4.2.3 Hasil Pengujian ....................................................................
84
4.2.4 Analisis Hasil Pengujian ......................................................
90
BAB V PENUTUP 5.1 Kesimpulan ...................................................................................
92
5.2 Saran .............................................................................................
92
Lampiran .........................................................................................................
L1
xi
DAFTAR GAMBAR Gambar 2.1 Model Sekuensial Linier............................................................
8
Gambar 2.2 Taksonomi program-program jahat...........................................
15
Gambar 2.3 Gambaran proses umum komponen backdoor..........................
19
Gambar 2.4 Bagian struktur registry dalam regedit…….................................
32
Gambar 3.1 Diagram use case aplikasi antivirus...........................................
36
Gambar 3.2 Diagram aktivitas untuk use case melakukan pendeteksian ….
45
Gambar 3.3 Diagram aktifitas untuk use case mengelola data signature.....
48
Gambar 3.4 Diagram aktifitas untuk use case melakukan pencegahan dan penggagalan…………………………………………………………............. 51 Gambar 3.6 Diagram sekuensial untuk use case mengelola data signature...
55
Gambar 3.8 Rancangan menu pendeteksian dari aplikasi.............................
57
Gambar 3.9 Rancangan menu signature dari aplikasi....................................
58
Gambar 3.10 Rancangan menu option dari aplikasi........................................
59
Gambar 3.11 Rancangan tampilan form CRC dari aplikasi..........................
59
Gambar 3.12 Rancangan tampilan form report dari aplikasi..........................
60
Gambar 3.13 Rancangan tampilan form konfigurasi windows dari aplikasi...
61
Gambar 3.14 Rancangan tampilan form lihat registry dari aplikasi................
62
xii
Gambar 4.1 Tampilan menu pendeteksian......................................................
77
Gambar 4.2 Tampilan aplikasi ketika pengguna menekan tombol browse pada menu pendeteksian..........................................................................................
77
Gambar 4.3 Tampilan menu signature...........................................................
78
Gambar 4.4 Tampilan form CRC...................................................................
78
Gambar 4.5 Tampilan menu option................................................................
79
Gambar 4.6 Tampilan form konfigurasi windows ketika pengguna menekan tombol konfigurasi windows............................................................................
79
Gambar 4.7 Tampilan form lihat registry ketika pengguna menekan tombol ok pada form konfigurasi windows......................................................................
80
Gambar 4.8 Tampilan menu pendeteksian ketika menemukan file backdoor.
85
Gambar 4.9 Tampilan menu pendeteksian ketika pengguna menekan tombol delete tetapi tidak ada file yang dipilih............................................................
86
Gambar 4.10 Tampilan menu pendeteksian ketika pengguna menekan tombol reload……………………………....................................................................
86
Gambar 4.11 Tampilan form CRC yang menampilkan nilai CRC dari file yang dipilih...............................................................................................................
87
Gambar 4.12 Tampilan menu signature ketika pengguna mengisi data signature backdoor…………….......................................................................................
87
Gambar 4.13 Tampilan menu signature setelah pengguna menekan tombol add… ………………………………………………………………………….
88
Gambar 4.14 Tampilan file scan.dat yang mengalami perubahan setelah pengguna menekan tombol save......................................................................................
88
Gambar 4.15 Tampilan form konfigurasi windows setelah backdoor menginfeksi.
xiii
..........................................................................................................................
89
Gambar 4.16 Tampilan form lihat registry setelah backdoor memanipulasi registry.............................................................................................................
90
DAFTAR TABEL Tabel 2.1. Jenis diagram resmi UML versi 2...................................................
9
Tabel 2.2. Notasi pemodelan diagram use case..............................................
10
Tabel 2.3. Notasi pemodelan diagram sekuensial...........................................
13
Tabel 2.4. Simbol-simbol pada diagram aktifitas...........................................
14
Tabel 3.1 Kebutuhan sistem, aktor dan use case pada aplikasi antivirus........
36
Tabel 3.2 Mencari aktifitas di aliran utama dan alternatif pada use case melakukan pendeteksian…...............................................................................................
43
Tabel 3.3 Mengelola data signature dari dokumen use case.........................
47
Tabel 3.4 Mencari aktifitas di aliran utama dan alternatif pada use case melakukan pencegahan dan penggagalan……...................................................................
49
Table 4.1 Tabel skenario pengujian ….............................................................
83
Table 4.2 Tabel hasil pengujian........................................................................
84
xiv
DAFTAR PUSTAKA
Darmal, Achmad. 2006a. Computer Backdoor 1. Jakarta : Jasakom. ----------. 2006b. Computer Backdoor 2. Jakarta : Jasakom. Grady Booch, James Rumbaugh, dan Ivar Jacobson. 1998. The Unified Modeling Language
User
Guide.
Canada:
Addison-Wesley
Publishing
Company. Hariyanto, Bambang. 1999. Sistem Operasi. Edisi Kedua. Bandung : Penerbit INFORMATIKA Bandung. Munawar. 2005. Pemodelan Visual dengan UML. Yogyakarta: Penerbit Graha Ilmu. Pressman, Roger S. 2002. Rekayasa Perangkat Lunak Buku 1. Yogyakarta: Penerbit Andi. _________(2006), PC Viruses in-the-wild 2005-2006, Wildlist Organization Internationa, http://www.wildlist.org/ _________(2006), PT Vaksincom, http://vaksin.com/
xv
BAB I PENDAHULUAN
1.1. Latar Belakang Perkembangan teknologi informasi bukanlah hal yang baru bagi masyarakat. Setiap tahun bahkan setiap bulan ada saja teknologi-teknologi baru yang berbeda dari teknologi sebelumnya. Khususnya teknologi komputer dan jaringannya yang semakin baik tiap tahunnya. Kemajuan tekonologi komputer juga didukung oleh kemajuan sistem pengamanannya. Setiap menit ada saja ancaman langsung dari para craker atau hacker jahat hingga ancaman yang dilakukan melalui suatu program disebut malcode (malicious code) yang akan merusak sistem dalam komputer dan akan menghambat kinerja masyarakat. Program atau script apapun yang bersifat merusak dan merugikan dikategorikan sebagai malcode termasuk virus computer. Sejak tahun 1949 pertama kalinya virus ditemukan sampai saat ini jumlah virus computer tidak bisa dihitung dengan jari, dalam satu virus ada beberapa anak virus yang lain. Data yang penulis dapat ada lebih dari 55 nama-nama virus yaitu armora 13, flu burung B, code X, decoil, romantic devila, shur A, suspicious M,gen, suspiciusn & pinfi, aksika, harpot, riyani jangkaru, redolf N, MMI, MTH, moonlight B.C, copy A, myztx, aksika, ANF, dan masih banyak lagi. Virus komputer bisa diartikan sebagai suatu program komputer biasa. Tetapi memiliki perbedaan yang mendasar dengan program-program lainnya, yaitu virus dibuat untuk menulari program-program lainnya, mengubah, memanipulasinya 1
2
bahkan sampai merusaknya. Ada yang perlu dicatat disini, virus hanya akan menulari apabila program pemicu atau program yang telah terinfeksi tadi dieksekusi, disinilah perbedaannya dengan backdoor. Virus memiliki beberapa criteria yaitu kemampuan untuk mendapatkan informasi, Kemampuan untuk memeriksa suatu file, kemampuan untuk menggandakan diri dan menularkan diri, Kemampuan melakukan manipulasi, dan kemampuan untuk menyembunyikan diri. Aktifitas backdoor di Indonesia semakin meningkat, terbukti dari sejumlah forum dapat ditemukan beberapa posting yang menunjukkan adanya gejala-gejala penyebaran yang baru. Motif yang digunakan semakin beragam, mulai dari hanya sekedar pamer sampai dengan pengrusakan dan pencurian data. Media penyebaran pun semakin canggih mulai dari disket dan flashdisk, email, irc sampai dengan jaringan termasuk website. Namun satu hal yang pasti, penyebaran backdoor tersebut telah membawa dampak yang cukup besar bagi para pengguna komputer baik materiil maupun non materiil karena virus ini menginfeksi file-file yang dapat dieksekusi langsung dari system operasi, baik itu file application (*.EXE) maupun (*.COM) biasanya juga hasil infeksi dari virus ini dapat diketahui dengan berubahnya ukuran file yang diserangnya.
1.2 Ruang Lingkup Untuk mencegah virus berkembangbiak, maka diperlukan aplikasi. Aplikasi yang dibangun adalah aplikasi antivirus. Cara kerja aplikasi ini secara manual karena masih membutuhkan interaksi dari pengguna yaitu pengguna bisa melakukan pencarian (scanning) terhadap file atau folder yang dianggap sebagai
3
file backdoor dengan menekan tombol scan, di mana identitas file backdoor ini merupakan hasil pengamatan dan analisa penulis terhadap backdoor tersebut yang kemudian disimpan ke dalam data signature berupa nilai CRC. Aplikasi ini juga bisa memperoleh nilai CRC dari file-file yang ada juga berguna untuk menambah data signature. Setelah ditemukan, pengguna dapat menghapus file atau folder tersebut dengan menekan tombol delete maka aplikasi ini menghapus file atau folder tersebut. Aplikasi ini juga melakukan pengecekan terhadap nilai registry yang telah dimanipulasi oleh backdoor. Pada aplikasi ini pula pengguna dapat menampilkan dan menghentikan proses dari backdoor yang menginfeksi sistem komputer.
1.3 Tujuan Pembahasan Tujuan dari pembahasan tugas akhir ini antara lain: 1. Mengenali perilaku backdoor dan caranya menginfeksi sistem. 2. Membuat aplikasi antivirus backdoor.
1.4 Batasan Masalah Batasan masalah pada laporan tugas akhir ini adalah sebagai berikut: 1. Aplikasi ini dibuat dengan menggunakan bahasa pemrograman Visual Basic versi 6.0. 2. Pembahasan akan difokuskan pada program aplikasi antivirus baakdoor.
4
1.5 Metodologi Dalam melakukan perancangan aplikasi ini, metodologi perangkat lunak yang digunakan oleh penulis adalah model sekuensial linier untuk rekayasa perangkat lunak, atau sering disebut juga dengan ”siklus kehidupan klasik” atau ”model air terjun”. Model sekuensial linier mengusulkan sebuah pendekatan kepada perkembangan perangkat lunak yang sistematik mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, pengujian dan pemeliharaan (Roger S. Pressman, 2002:36-37). Metodenya antara lain seperti di bawah ini: 1. Analisis. Penulis membuat sketsa awal untuk perencanaan proyek dan dokumentasi untuk sistem baru. a. Mencari file sampel yang terinfeksi backdoor tersebut. b. Mengidentifikasi perilaku backdoor. 2. Desain. Penulis melakukan perancangan aplikasi sesuai dengan hasil analisis. 3. Pengkodean. Setelah melakukan analisa dan perancangan, penulis melakukan pengkodean aplikasi sesuai kebutuhan aplikasi. 4. Pengujian. Penulis melakukan pengujian terhadap aplikasi yang dibuat dengan menggunakan file sampel yang terinfeksi backdoor untuk memastikan bahwa aplikasi bekerja dengan sempurna.
5
1.6 Sistematika Penulisan BAB I
:
PENDAHULUAN Bab ini menguraikan tentang latar belakang pemilihan topik, ruang lingkup, tujuan pembahasan, batasan masalah, metodologi dan sistematika penulisan.
BAB II
:
LANDASAN TEORI Dalam bab ini disajikan teori-teori yang digunakan sebagai kerangka berfikir dan menjadi landasan bagi penulis dalam merancang aplikasi antivirus guna mengatasi permasalahan yang ada dan teori-teori tersebut adalah model sekuensial linier, UML (Unified Modelling Language), malware, mengenal backdoor dan antivirus.
BAB III :
ANALISIS DAN PERANCANGAN Bab ini meliputi tentang hal-hal yang berhubungan dengan, analisis kebutuhan sistem, rancangan proses implementasi dan perancangan antarmuka.
BAB IV : IMPLEMENTASI DAN PENGUJIAN Bab ini meliputi hal-hal yang berhubungan dengan kode program dan hal-hal yang berhubungan dengan pengujian aplikasi. BAB V
:
PENUTUP Bab ini meliputi tentang kesimpulan berdasarkan uraian-uraian dari bab-bab sebelumnya dan beberapa saran untuk pengembangan lebih lanjut.
6
BAB II LANDASAN TEORI
2.1 Model Sekuensial Linier Model sekuensial linier untuk rekayasa perangkat lunak, atau sering disebut juga dengan siklus kehidupan klasik atau model air terjun, model sekuensial linier mengusulkan sebuah pendekatan kepada perkembangan perangkat lunak yang sistematik yang mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, pengujian dan pemeliharaan, menurut Roger S. Pressman (2002:37-38) model sekuensial linier melingkupi aktifitas-aktifitas sebagai berikut: 1. Rekayasa dan pemodelan sistem atau informasi Pada tahapan ini dilakukan proses pengumpulan kebutuhan pengguna pada tingkatan sistem dengan sejumlah kecil analisa serta desain tingkat puncak 2. Analisis kebutuhan perangkat lunak Proses pengumpulan kebutuhan diintensifkan dan difokuskan khususnya pada perangkat lunak. Untuk memahami perangkat lunak yang dibangun, perekayasa perangkat lunak harus memahami domain informasi, tingkah laku, unjuk kerja, dan antarmuka yang diperlukan 3. Desain Proses multi langkah yang berfokus pada empat atribut program yang berbeda: struktur data, arsitek perangkat lunak, representasi antarmuka, dan detail prosedural. Proses desain menerjemahkan kebutuhan ke dalam sebuah 6
7
representasi perangkat lunak yang dapat diperkirakan demi kualitas sebelum dimulai
pemunculan
kode.
Sebagaimana
persyaratan,
desain
didokumentasikan dan menjadi bagian dari konfigurasi perangkat lunak. 4. Generasi kode Desain harus diterjemahkan ke dalam bentuk mesin yang bisa dibaca. Artinya dilakukan pengkodean (coding) berdasarkan desain yang telah di buat. 5. Pengujian Setelah kode di buat, pengujian program di mulai. Proses pengujian berfokus pada logika internal perangkat lunak, memastikan bahwa semua pernyataan sudah diuji dan pada eksternal fungsional yaitu mengarahkan pengujian untuk menemukan kesalahan-kesalahan dan memastikan bahwa masukan yang dibatasi akan memberikan hasil aktual yang sesuai dengan hasil yang dibutuhkan. 6. Pemeliharaan Perangkat lunak akan mengalami perubahan setelah disampaikan kepada pelanggan. Perubahan akan terjadi karena kesalahan-kesalahan ditentukan, karena perangkat lunak harus disesuaikan untuk mengakomodasi perubahanperubahan di dalam lingkungan eksternalnya. Pemeliharaan perangkat lunak mengaplikasikan lagi setiap tahap program sebelumnya dan tidak membuat.
8
Untuk lebih jelasnya lagi bisa dilihat pada Gambar 2.1.
Pemodelan sistem analisis
desain
kode
tes
Gambar 2.1 Model Sekuensial Linier 2.2 Unified Modelling Language (UML) Menurut Munawar (2005:17) UML adalah bahasa pemodelan standar pada rekayasa perangkat lunak. UML adalah salah satu alat bantu yang sangat handal di dunia pengembangan sistem yang berorientasi objek. Hal ini disebabkan karena UML menyediakan bahasa pemodelan visual yang memungkinkan bagi pengembang sistem untuk membuat cetak biru atas visi mereka dalam bentuk yang baku, mudah dimengerti serta dilengkapi dengan mekanisme yang efektif untuk berbagi (sharing) dan mengkomunikasikan rancangan mereka dengan yang lain. Di proyek pengembangan sistem apapun, fokus utama dalam analisis dan perancangan adalah model dan diagram. Model menggambarkan pandangan yang lengkap tentang suatu sistem pada suatu tahapan tertentu dan dari perspektif tertentu. Sedangkan diagram menggambarkan atau mendokumentasikan beberapa aspek dari sebuah sistem. Sebuah model mungkin mengandung satu atau lebih diagram. untuk model sederhana, satu diagram mungkin akan mencukupi. Akan tetapi biasanya sebuah model terdiri dari banyak diagram.
9
Tabel 2.1. Jenis diagram resmi UML versi 2. No. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Diagram Activity Class Communication Component Composite structure Deployment Interaction overview Object Package Sequence State machine Timing Use case
Kegunaan Perilaku prosedural dan parallel Class, fitur, dan hubungan-hubungan Interaksi antar objek; penekanan pada jalur Struktur dan koneksi dari komponen Dekomposisi runtime sebuah class Penyebaran atau instalasi ke klien Gabungan sequence dan activity diagram Contoh konfigurasi dari contoh-contoh Struktur hirarki saat kompilasi Interaksi antar objek. Lebih menekankan pada urutan Bagaimana even mengubah objek selama aktif Interaksi antar objek; penekanan pada waktu Bagaimana pengguna berinteraksi dengan sebuah sistem
Tabel 2.1 menampilkan beberapa tipe diagram UML versi 2.
2.2.1 Diagram Use Case Menurut Munawar (2005:63) use case adalah deskripsi fungsi dari sebuah sistem dari perspektif pengguna. Use case bekerja dengan cara mendeskripsikan tipikal interaksi antara pengguna sebuah sistem dengan sistemnya sendiri melalui sebuah cerita bagaimana sebuah sistem dipakai. Urutan langkah-langkah yang menerangkan antara pengguna dan sistem disebut skenario. Setiap skenario mendeskripsikan urutan kejadian. Setiap urutan diinisialisasi oleh orang, sistem yang lain, perangkat keras atau urutan waktu. Dengan demikian secara singkat bisa dikatakan use case adalah serangkaian skenario yang digabungkan bersamasama oleh tujuan umum pengguna. Dalam pembicaraan tentang use case, pengguna biasanya disebut dengan aktor. Aktor adalah sebuah peran yang bisa dimainkan oleh pengguna dalam interaksinya dengan sistem. Aktor mewakili peran orang, sistem yang lain, atau alat ketika berkomunikasi dengan use case. Di dalam use case terdapat Stereotype
10
yaitu sebuah model khusus yang terbatas untuk kondisi tertentu. Untuk menunjukkan Stereotype digunakan simbol ”<<” diawalnya dan ditutup ”>>” diakhirnya. <
> digunakan untuk menggambarkan bahwa suatu use case seluruhnya
merupakan
fungsionalitas
dari
use
case
lainnya.
Biasanya
<> digunakan untuk menghindari penggandaan suatu use case karena sering dipakai. <<extend>> digunakan untuk menunjukkan bahwa suatu use case merupakan tambahan fungsional dari use case yang lain jika kondisi atau syarat tertentu dipenuhi. Di dalam use case juga terdapat generalisasi. Generalisasi diantara aktor adalah spesialisasi aktor yang bisa berpartisipasi di semua use case yang diasosiasikan dengan aktor yang lebih umum. Tabel 2.2 menampilkan notasinotasi dalam pemodelan diagram use case menurut Booch, Rumbaugh, dan Jacobson (1998:187). Tabel 2.2. Notasi pemodelan diagram use case No.
Notasi
Keterangan
1
Aktor
2
Use Case
3
Batas sistem (system boundary)
4
Garis penghubung (pengendali arah)
5
Gabungan (association)
11
6
Generalisasi (generalization)
7
Realisasi (realization)
8
9
<< include
Stereotype penyertaan (include)
<< extend >>
Stereotype perluasan (extend)
Menurut Munawar (2005:179) setiap use case harus dideskripsikan dalam dokumen yang disebut dengan dokumen aliran kejadian (flow of event). Dokumen ini mendefinisikan apa yang harus dilakukan oleh sistem ketika aktor mengaktifkan use case. Struktur dari dokumen use case ini bisa macam-macam, tetapi umumnya deskripsi ini paling tidak harus mengandung: 1. Deskripsi singkat (brief description). 2. Aktor yang terlibat. 3. Kondisi awal (precondition) yang penting bagi use case untuk memulai. 4. Deskripsi rinci dari aliran kejadian yang mencakup: a. Aliran utama (main flow) dari kejadian yang bisa dirinci lagi. b. Aliran bagian (sub flow) dari kejadian. c. Aliran alternatif untuk mendefinisikan situasi perkecualian. 5. Kondisi akhir yang menjelaskan state dari sistem setelah use case berakhir. Dokumen use case ini berkembang selama masa pengembangan. Di awalawal penentuan kebutuhan sistem, hanya deskripsi singkat saja yang ditulis. Bagian-bagian lain dari dokumen ini ditulis secara gradual dan iteratif, Akhirnya
12
sebuah dokumen lengkap bisa didapatkan di akhir fase spesifikasi. Biasanya pada fase spesifikasi ini sebuah prototipe yang dilengkapi dengan tampilan layar bisa ditambahkan. Pada tahap berikutnya, dokumen use case ini bisa digunakan untuk membuat dokumentasi untuk implementasi sistem. 2.2.2 Diagram Sekuensial Menurut Munawar (2005:87) diagram sekuensial digunakan untuk menggambarkan perilaku pada sebuah skenario. Diagram ini menunjukkan sejumlah contoh objek dan pesan yang diletakkan diantara objek-objek ini di dalam use case. Komponen utama diagram sekuensial terdiri atas objek atau disebut juga peserta (participant) yang dituliskan dengan kotak segi empat bernama, pesan diwakili oleh garis dengan tanda panah dan waktu yang ditunjukkan dengan garis tegak lurus. Setiap obyek terhubung dengan garis titik-titik yang disebut garis hidup (lifeline). Sepanjang garis hidup terdapat kotak yang disebut penggerakan (activation). Tabel 2.3 memperlihatkan notasi-notasi dalam pemodelan diagram sekuensial.
Tabel 2.3. Notasi pemodelan diagram sekuensial No.
Notasi
Keterangan
13
1
2
Aktor
Nama obyek
Obyek
3
Batas (boundary)
4
Kendali (control)
5
Entitas (entity)
6
Penggerakan (activation)
7
Garis hidup (lifeline)
8
Pesan selaras (Synchronous message)
9
Pesan tidak selaras (Asynchronous message)
10
Pesan kembali yang tidak selaras (asynchronous return message)
11
Pesan rekursif (self message)
12
Pesan hilang (lost message)
13
Pesan ditemukan (found message)
14 15
New
Pesan pembuatan obyek baru Pesan penghapusan obyek
14
2.2.3 Diagram Aktifitas Menurut Munawar (2005:109) diagram aktifitas adalah teknik untuk mendeskripsikan logika prosedural, proses bisnis dan aliran kerja dalam banyak kasus. Diagram aktifitas mempunyai peran seperti halnya diagram alur (flowchart), akan tetapi perbedaannya dengan flowchart adalah diagram aktifitas bisa mendukung perilaku paralel sedangkan flowchart tidak bisa. Berikut pada Tabel 2.4 adalah simbol-simbol yang sering digunakan pada saat pembuatan diagram aktifitas. Tabel 2.4. Simbol-simbol pada diagram aktifitas No
1 2
Simbol
Keterangan Titik awal Titik akhir
6 7
Activity Pilihan untuk pengambilan keputusan Fork : digunakan untuk menunjukkan kegiatan yang dilakukan secara paralel atau untuk menggabungkan dua kegiatan paralel menjadi satu Rake : menunjukkan adanya dekomposisi Tanda waktu
8 9 10
Tanda pengiriman Tanda penerimaan Aliran akhir (flow final)
3 4 5
2.3 Malware (Malicious Software) Perkembangan teknologi yang pesat, ternyata tidak hanya membawa manfaat yang besar bagi penggunanya tetapi juga menimbulkan dampak negatif dengan dibuatnya kode program berbahaya. Program-program berbahaya itu sering disebut juga dengan malicious code atau malicious software (malware).
15
Menurut Bambang Hariyanto (1999:292) Ancaman-ancaman terhadap sistem komputer adalah program yang mengeksploitasi kelemahan sistem komputasi. Bowles memberikan taksonomi ancaman perangkat lunak atau klasifikasi program jahat (malicious program). Gambar 2.2 menunjukkan taksonomi yang diberikan oleh Bowles. Ancaman-ancaman itu dapat dibagi menjadi dua kategori, yaitu: 1. Program-program yang memerlukan program inang (host program). Fragmen program tidak dapat mandiri secara independen dari suatu program aplikasi, program utilitas atau program sistem. 2. Program-program yang tidak memerlukan program inang. Program sendiri yang dapat dijadwalkan dan dijalankan oleh sistem operasi. Malware
Independen
Perlu program Inang
Bacteria Virus
Trapdoor
Trojan horse
Worm
Logic Bombs
Gambar 2.2 Taksonomi program-program jahat 2.4 Backdoor Komputer Menurut Happy Chandraleka (2004:79) Backdoor di dalam sistem komputer adalah suatu program yang tidak diharapkan dan disisipkan tanpa sepengetahuan pemilik komputer. Program ini kemudian dapat diaktifkan dan dikendalikan dari
16
jarak jauh, atau dengan menggunakan pewaktu (timer). Akibatnya, komputer yang disisipi backdoor tersebut dapat dikendalikan dari jarak jauh. Backdoor bersembunyi di latar belakang dengan cara membuka port tertentu dan menunggu diaktifkan oleh penyerang. Komputer yang telah terinfeksi dapat dikendalikan oleh penyerang melalui versi client-nya Backdoor menggunakan hubungan jaringan untuk menyebar dari sistem ke sistem lain. Sekali aktif di suatu sistem, network backdoor dapat berlaku seperti virus, bacteria, menempelkan program trojan horse, melakukan sejumlah aksi menjengkelkan atau bahkan menghancurkan. Untuk mereplikasi dirinya, network backdoor menggunakan suatu layanan jaringan seperti: a. Fasilitas surat elektronik (electronic mail facility), yaitu backdoor mengirimkan kopian dirinya ke sistem-sistem lain. b. Kemampuan eksekusi jarak jauh (remote execution capability), yaitu backdoor mengeksekusi kopian dirinya di sistem lain. c. Kemampuan login jarak jauh (remote login capability), yaitu backdoor logo pada sistem jauh sebagai pemakai dan kemudian menggunakan perintah untuk mengkopi dirinya dari satu sistem ke sistem lain. Kopian program backdoor yang baru kemudian dijalankan di sistem jauh dan melakukan fungsi-fungsi lain yang dilakukan di sistem itu, backdoor terus menyebar dengan cara yang sama. Network backdoor mempunyai ciri-ciri yang sama dengan virus komputer, yaitu mempunyai fase-fase sama yaitu Dormant phase, Propagation phase, Trigerring phase, Execution phase. Network backdoor juga berusaha menentukan
17
apakah sistem sebelumnya telah diinfeksi sebelum mengirim kopian dirinya ke sistem itu. Dari beberapa keterangan diatas dapat diperjelas bahwa backdoor adalah suatu algoritma atau program yang mereproduksi diri sendiri dari sistem ke sistem dengan menggunakan media penyimpanan atau suatu jaringan.
2.4.1 Struktur Backdoor Lima komponen yang umum dimiliki oleh backdoor adalah sebagai berikut: 1. Reconnaissance Komponen backdoor ini bertugas untuk merintis jalannya penyebaran pada jaringan. Komponen ini memastikan titik-titik (node) mana saja pada jaringan yang dapat diinfeksi olehnya. 2. Menyerang (Attack) Komponen ini bertugas untuk melancarkan serangan pada target node yang telah teridentifikasi. 3. Hubungan (Communications) Komponen ini membuat tiap node yang terinfeksi pada jaringan dapat saling berkomunikasi. Komponen memberikan semacam antar muka (interface) agar tiap backdoor pada jaringan dapat saling mengirim pesan. 4. Perintah (Command) Komponen ini menjadi semacam pemicu apabila target sudah teridentifikasi. Komponen ini merupakan suatu antar muka agar setiap backdoor dapat mengeluarkan perintah (command) pada backdoor di titik lain lain. 5. Kecerdasan (Intelligence) Komponen ini merupakan komponen cerdas yang mampu memberikan
18
informasi bagaimana karakteristik keadaan backdoor di titik lain pada jaringan. Gambar 2.3 menggambarkan bagaimana komponen reconnaissance mencari informasi tentang karakteristik node yang akan di infeksi, jika komponen tersebut sudah mendapatkan semua informasi tentang karakteristik node yang akan di infeksi maka komponen reconnaissance bisa langsung melakukan serangan melalui komponen attack. Jika komponen reconnaissance belum mendapatkan informasi, maka komponen reconnaissance harus melalui komponen intelligence dimana komponen tersebut akan memberikan informasi karakteristik keadaan backdoor di titik lain pada jaringan supaya file backdoor tersebut bisa saling berkomunikasi melalui komponen communication dan bisa langsung melakukan serangan atau menggunakan perintah command untuk melakukan serangan melalui komponen attack.
Gambar 2.3 Gambaran proses umum komponen backdoor 2.4.2 Kemampuan Dasar Backdoor Menurut Achmad Darmal (2006a:9) backdoor umumnya memiliki kemampuan-kemampuan dasar berikut ini:
19
a. Kemampuan mendapatkan informasi Suatu backdoor harus bisa mendapatkan informasi yang ia butuhkan seperti jenis sistem informasi yang digunakan, direktori root, direktori sistem windows bahkan backdoor umumnya memeriksa suatu sistem apakah telah terpasang antivirus atau tidak, lebih jauh lagi backdoor akan berusaha mengenali jenis antivirus yang dipasang. b. Kemampuan menyembunyikan diri Menjaga tetap tidak diketahui adalah penting untuk backdoor zaman sekarang agar tetap bertahan pada suatu sistem. Hal ini biasanya dilakukan dengan cara tidak menampilkan sesuatu dari backdoor baik berupa suara maupun tampilan visual, menyembunyikan program backdoor dan taskbar bahkan dari jendela tasklist.
c. Kemampuan reproduksi dan distribusi Yaitu kemampuan yang mutlak dimiliki suatu backdoor untuk membuat salinan dirinya, sekaligus mendistribusikan salinan tersebut pada sistem yang lain baik melalui media penyimpanan seperti disket, USB flashdisk maupun melalui suatu jaringan komputer. Walaupun memiliki rutin untuk menginfeksi program lain namun tidak bertujuan menjadikan file program terinfeksi menjadi suatu infector. Pada awalnya backdoor dibuat dengan aksi memenuhi harddisk dan jaringan, namun seiring dengan perkembangan teknologi informasi hal ini akhirnya banyak ditinggalkan penulis backdoor karena malah akan mengurangi kemampuannya untuk menyembunyikan diri, yang akan berakibat backdoor
20
tersebut cepat ”terendus” oleh advanced user atau bahkan perusahaanperusahaan antivirus. d. Kemampuan rekayasa sosial Karena file infector backdoor akan aktif saat user mengeksekusinya maka social engineering atau rekayasa sosial menjadi hal yang sangat penting bagi suatu backdoor. Layaknya seorang penjual yang mati-matian merayu calon pembeli maka backdoor akan merias programnya dengan icon dan nama yang sangat memikat agar pengguna mengeksekusinya. Suatu backdoor bisa saja membuat salinan dirinya dengan nama file porno dan dengan gambar icon yang sangat tidak mencurigakan. e. Kemampuan mengadakan manipulasi Umumnya manipulasi dilakukan oleh backdoor untuk bertahan hidup. Backdoor cenderung mengadakan manipulasi pada registry agar backdoor bisa tetap aktif saat komputer dihidupkan, bahkan memanipulasi registry milik suatu antivirus agar tidak mengganggu backdoor tersebut. Tapi backdoor bisa saja mengadakan manipulasi yang terlepas dari tujuan tadi, seperti mengubah volume label pada harddisk atau disket.
2.4.3 Siklus Hidup Backdoor Menurut Achmad Darmal (2006a:11) siklus hidup backdoor secara umum melalui 4 tahap, yaitu: 1. Fase penyebaran (propagation phase) Pada fase ini backdoor akan membuat salinan dirinya ke suatu tempat, baik pada media penyimpanan fix disk (tetap) atau removeable disk (dapat
21
dipindahkan), adapun penyebarannya dapat dilakukan pada sistem lokal, jaringan atau Internet. 2. Fase istirahat/tidur (dormant phase) Pada fase ini backdoor tidaklah aktif. Backdoor akan diaktifkan oleh suatu kondisi tertentu, semisal tanggal yang ditentukan, kehadiran program lain atau dieksekusinya program lain, dan sebagainya. Tidak semua backdoor melalui fase ini. 3. Fase aktif (trigerring phase) Di fase ini backdoor tersebut akan aktif dan menetap pada memori, hal ini dipicu oleh metode launcher yang digunakan backdoor tersebut. 4. Fase eksekusi (execution phase) Pada fase inilah backdoor yang telah aktif tadi akan melakukan fungsinya. Seperti menghapus file, menampilkan pesan-pesan dan sebagainya.
2.5 Antivirus Menurut Bambang Hariyanto (1999:297) solusi ideal terhadap ancaman virus, backdoor atau malware lainnya adalah pencegahan. Jangan ijinkan virus masuk ke sistem. Sasaran ini tak mungkin dilaksanakan sepenuhnya. Pencegahan dapat mereduksi sejumlah serangan virus. Setelah pencegahan terhadap masuknya virus, maka pendekatan berikutnya yang dapat dilakukan adalah: 1. Deteksi Begitu infeksi telah terjadi, tentukan apakah infeksi memang telah terjadi dan cari lokasi virus. 2. Identifikasi
22
Begitu virus terdeteksi maka identifikasi virus yang menginfeksi program. 3. Penghilangan Begitu virus dapat diidentifikasi maka hilangkan semua jejak virus dari program yang terinfeksi dan program dikembalikan ke semula (sebelum terinfeksi). Jika deteksi sukses dilakukan, tapi identifikasi atau penghilangan tidak dapat dilakukan maka alternatif yang dilakukan adalah hapus program yang terinfeksi dan kopi kembali (backup) program yang masih bersih. Sebagaimana virus berkembang dari yang sederhana menjadi semakin canggih, begitu juga paket perangkat lunak antivirus. Saat ini program antivirus semakin kompleks dan canggih. Perkembangan program antivirus dapat diperiode menjadi empat generasi, yaitu:
1. Generasi pertama: sekedar scanner sederhana. Antivirus men-scan program untuk menemukan penanda (signature) virus. Walaupun virus mungkin berisi ”karakter-karakter varian” tapi secara esensi mempunyai struktur dan pola bit yang sama di semua kopiannya. Teknik ini terbatas untuk deteksi virus-virus yang sudah dikenal. Tipe lain antivirus generasi pertama adalah mengelola rekaman panjang (ukuran) program dan memeriksa perubahan panjang program. 2. Generasi kedua: scanner yang pintar (heuristic scanner). Antivirus men-scan tidak bergantung pada penanda spesifik. Antivirus menggunakan
aturan-aturan
pintar
(heuristic
rules)
untuk
mencari
kemungkinan infeksi virus. Teknik yang dipakai misalnya mencari fragmen-
23
fragmen kode yang sering merupakan bagian virus. Contohnya, antivirus mencari awal loop enkripsi yang digunakan polymorphic virus dan menemukan kunci enkripsi. Begitu kunci ditemukan, antivirus dapat mendekripsi virus untuk identifikasi dan kemudian menghilangkan infeksi virus. Teknik lain adalah pemeriksaan integritas. Checksum dapat ditambahkan di tiap program. Jika virus menginfeksi program tanpa mengubah checksum, maka pemeriksaan integritas akan menemukan perubahan itu. Untuk menanggulangi virus canggih yang mampu mengubah checksum saat menginfeksi program, fungsi hash ter-enkripsi digunakan. Kunci enkripsi disimpan secara terpisah dari program sehingga program tidak dapat menghasilkan kode hash baru dan meng-enkripsinya. Dengan menggunakan fungsi hash bukan checksum sederhana maka mencegah virus menyesuaikan program yang menghasilkan kode hash yang sama seperti sebelumnya. 3. Generasi ketiga: jebakan-jebakan aktifitas (activity trap). Program antivirus merupakan program yang menetap di memori (memory resident program). Program ini mengidentifikasi virus melalui aksi-aksinya bukan dari struktur program yang diinfeksi. Dengan antivirus semacam ini tak perlu mengembangkan penanda-penanda dan aturan-aturan pintar untuk beragam virus yang sangat banyak. Dengan cara ini yang diperlukan adalah mengidentifikasi
kumpulan
instruksi
yang
berjumlah
sedikit
yang
mengidentifikasi adanya usaha infeksi. Kalau muncul kejadian ini, program antivirus segera mengintervensi. 4. Generasi keempat: proteksi penuh (full featured protection).
24
Antivirus generasi ini menggunakan beragam teknik antivirus secara bersamaan. Teknik-teknik ini meliputi scanning dan jebakan-jebakan aktifitas. Antivirus juga mempunyai senarai kapabilitas pengaksesan yang membatasi kemampuan virus memasuki sistem dan membatasi kemampuan virus memodifikasi file untuk menginfeksi file.
2.5.1 Program Removal Menurut Achmad Darmal (2006b:2) program removal adalah suatu program yang dirancang untuk membersihkan suatu malcode tertentu dan umumnya juga mengembalikan perubahan yang disebabkan oleh malcode tersebut. Untuk mengetahui ada tidaknya virus komputer pada suatu sistem komputer adalah dengan menginstal program antivirus dan melakukan full scanning, namun untuk mengetahui keberadaan virus yang belum terdeteksi oleh program antivirus, maka cara yang termudah adalah mengamati gejala abnormal yang muncul saat mengoperasikan komputer. Adapun gejala abnormal yang terjadi antara lain: a. Sistem komputer menjadi lambat, karena tingkat penggunaan prosesor dan memori yang besar. Biasanya sistem akan menampilkan sebuah kotak pesan ”Not Enough Memory” atau ”Low Memory”, bahkan sistem bisa secara tiba-tiba crash atau hang. b. Disk drive terakses secara berkala dalam waktu yang singkat, tanpa adanya instruksi dari pengguna. c. Konfigurasi berubah tanpa sepengetahuan pengguna, seperti konfigurasi wallpaper, icon, format huruf, waktu, nama pengguna dan konfigurasi lainnya.
25
d. Pengaksesan ke aplikasi tertentu tidak bisa dilakukan, seperti aplikasi registry editor, sistem konfigurasi utiliti, windows task manager, display propertis dan lainnya. e. Kapasitas disket, harddisk atau media penyimpanan lainnya tiba-tiba bertambah atau berkurang tanpa sebab yang jelas. Hal ini biasanya selalu digunakan backdoor untuk membuat salinan dirinya ke disket. Anda cukup memasukkan sebuah disket ke disk drive dan perhatikan perubahan kapasitas disket serta jumlah file yang ada. f. Perilaku yang tidak lazim pada sistem komputer, seperti hilangnya pointer mouse, hilangnya tombol start menu, restart dengan sendirinya, atau memunculkan text/gambar/suara aneh lainnya. g. Sistem tiba-tiba mengeksekusi program tertentu, seperti aplikasi internet browser, aplikasi email atau bahkan program uninstal untuk aplikasi tertentu. h. File tiba-tiba rusak atau hilang, seperti file dokumen microsoft word, file dokumen microsoft excel, file program registry editor dan lain-lain. i. Sistem operasi tidak dapat dioperasikan. Hal ini biasanya disebabkan karena terhapusnya sebagian file sistem, konfigurasi sistem yang salah, atau saat sistem operasi startup backdoor kemudian mematikan kembali sistem operasi tersebut.
2.5.1.1 Launcher File Removal Menurut Achmad Darmal (2006b:3) tahap pembersihan file launcher adalah tahap pembersihan yang dilakukan terhadap file utama serta backdoor file
26
pembantu lain yang berada pada sistem dan memori komputer. Pembersihan terhadap file launcher ini harus dilakukan pertama kali, terlebih untuk file launcher yang sedang terproses, karena file ini umumnya menjaga agar backdoor tetap eksis pada suatu sistem komputer. Untuk mengetahui letak file launcher ini, cara yang paling mudah dilakukan adalah memeriksa metode launcher yang umumnya digunakan backdoor agar tereksekusi setiap windows startup, adapun metode launcher tersebut antara lain: 1. Konfigurasi registry. Saat windows startup sistem akan mengeksekusi setiap program yang terdaftar pada key run, runonce, runonceex, runservices dan runserviceonce. Key registry ini terdapat pada hive HKCU (Hive Key Current User) dan HKLM (Hive Key Local Machine). 2. Konfigurasi file startup. Saat windows startup sistem juga akan mengeksekusi file tertentu yang ada pada konfigurasi file seperti autoexec.bat, win.ini, sistem.ini dan wininit.ini. 3. Direktori startup. Lokasi default direktori startup berbeda-beda pada sistem operasi windows, tetapi anda bisa mendapatkan lokasi default direktori tersebut pada data registry: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ex plorer\UserShellFolder, dengan value ”Startup”. 4. Pemanfaatan aplikasi lain. Umumnya backdoor memanfaatkan aplikasi terjadwal seperti screen saver dan scheduled task yang dapat menjalankan file program, metode launcher ini paling sedikit digunakan oleh backdoor writer.
27
2.5.1.2 Infector File Removal Menurut Achmad Darmal (2006b:58) tahap pembersihan file infector adalah tahap pembersihan untuk file backdoor yang didistribusi dan bertujuan untuk menginfeksi sistem komputer yang belum tertular. Umumnya backdoor lokal di Indonesia memanfaatkan media yang dapat dipindahkan (removable disk) untuk mendistribusikan filenya. File backdoor yang dikirim lewat fasilitas jaringan dan Internet juga merupakan file infector. Ada banyak trik dalam melakukan pencarian (scanning) file infector untuk known backdoor (backdoor yang sudah dikenal/diketahui sebelumnya), antara lain
1. File name scanning 2. File size scanning 3. File attribute scanning 4. Create date/time scanning 5. CRC scanning 6. File description scanning 7. Product name scanning 8. Company name scanning 9. File version scanning 10.Stringscanning Data-data yang diperiksa dari trik pencarian (scanning) tersebut disebut dengan istilah penanda (signature). Trik tersebut masing-masing memiliki pendekatan yang berbeda-beda dan tidak semuanya memiliki tingkat akurasi yang
28
tinggi. Pada aplikasi yang penulis buat, trik pencarian yang digunakan adalah CRC scanning. 1. CRC scanning CRC scanning adalah metode pencarian yang dilakukan dengan melakukan pencocokan nilai CRC pada file terperiksa dengan data CRC yang ada pada signature. CRC adalah singkatan dari Cyclic Redundancy Checksum yang merupakan algoritma teroptimasi dan suatu metode yang powerfull guna memeriksa sejumlah byte apakah termodifikasi atau tidak. Algoritma ini melakukan pemeriksaan pada isi file secara keseluruhan dan membuat angka 32 bit yang mewakili isi file tersebut. Perubahan kecil pada isi file mengakibatkan perubahan besar pada hasil pemeriksaan dan sangat kecil kemungkinan terjadinya dua file yang berbeda memiliki hasil pemeriksaan CRC yang sama (kemungkinan terjadi 1 banding 1 billion).
2.5.2 Definition File Definition file adalah suatu file yang memuat kumpulan data signature dari program jahat (malicious code) tertentu. Definition file umumnya digunakan oleh aplikasi-aplikasi antivirus professional, hanya saja karena aplikasi tersebut kebanyakan adalah aplikasi komersial, maka definition file yang digunakan tentunya terlebih dahulu telah terenkripsi dengan sangat baik. Bentuk umum definition file yang akan digunakan pada aplikasi ini adalah: Baris pertama: [maximum Size];[End Process Mode];[Wildcards]
29
Baris Selanjutnya: [Backdoor Name]; [Signature Mode];[Signature] [Backdoor Name]; [Signature Mode];[Signature] dan seterusnya….. Keterangan: ;
: parameter (symbol/tanda pemisah)
Maximum Size
: besar file maksimum dalam byte, untuk mempercepat proses scanning jika ukuran file lebih besar dari maximum size maka proses scanning akan dilewatkan untuk file tersebut.
End Process Mode
: memiliki 2 jenis nilai yaitu ”AUTO” untuk secara otomatis menghentikan proses backdoor yang ditemukan saat proses scanning dan ”MANUAL” untuk menghentikan proses backdoor jika user menghapus file tersebut.
Wildcards
: untuk mempercepat proses scanning, scanning hanya berlaku untuk pola nama file yang sesuai dengan pola pada wildcards, sebagai contoh jika backdoor pada definition file hanya menggunakan ekstensi ”.exe” maka scanning akan lebih cepat dengan mengatur wildcards menjadi ”.exe” daripada ”*.*”.
Backdoor Name
: memberi nama pada backdoor.
Signature Mode
: memiliki 1 jenis nilai yaitu ”CRC” untuk jenis signature CRC32.
30
Signature
: memberi nilai data signature sesuai dengan signature mode yang digunakan.
2.6 Registry Registry adalah pengkonfigurasian dan pengaturan kerja dengan windows dan pengaturan pendaftaran (registrations) basis data. Registry dalam windows memiliki tiga tujuan yaitu: 1. Menyimpan informasi komputer yang menginstal windows. 2. Menyimpan informasi perangkat lunak yang diinstal di komputer. 3. Menyimpan informasi pemakai yang berwenang memakai komputer tersebut. Registry berisi pengaturan dan informasi untuk semua perangkat keras (hardware), perangkat lunak (software), pengguna (user), dan pilihan-pilihan yang berkaitan dengan komputer tersebut. Ketika user melakukan perubahan pada pengaturan control panel, atau asosiasi file, system policies atau menginstal suatu software maka perubahan tersebut akan tersimpan di registry. File data pada registry disimpan dengan cara yang berbeda dan tergantung pada versi windows yang digunakan. Pada windows 95 dan 98 file data terdapat dua file hidden di dalam direktori windows yaitu file USER.DAT dan SYSTEM.DAT, untuk windows ME ada suatu tambahan berupa file CLASSES.DAT, sedangkan pada windows NT/2000/XP file dimasukkan secara terpisah di dalam direktori %Systemroot%\System32\Config.
2.6.1 Struktur Dasar Registry
31
Registry memiliki struktur hirarki yang mirip dengan struktur direktori pada aplikasi windows explorer. Masing-masing cabang utama disebut hive. Hive berisi key (kunci) dan masing-masing key bisa berisi key-key yang lain (sub-key), dan key bisa berisikan value (nilai). Value memuat data informasi aktual yang disimpan di dalam registry. Ada tiga data yang umumnya digunakan yaitu string, binary, dan DWORD. Penggunaan masing-masing data ini tergantung pada konteks.Lihat Gambar 2.4. Ada tiga jenis data yang umumnya digunakan yaitu: string, binary, dan DWORD. Penggunaan masing-masing data ini tergantung pada konteks.
Root key Sub key
Sub-sub key Data
Gambar 2.4 Bagian struktur registry dalam regedit
2.6.2 Bagian Registry dan Fungsinya Di lihat dari halaman regedit, banyak key dan subkey beserta dengan datanya, dari beberapa key yang ada, setiap key tersebut memiliki fungsi yang berbeda. Untuk lebih jelasnya, berikut penjelasnnya:
32
a. HKEY_CLASSES ROOT Key ini merupakan tempat di mana seluruh asosiasi file Windows disimpan, dan di mana Windows akan mencari special folder type classes. Di dalam struktur, key ini identik dengan HKEY_LOCAL_MACHINE\SOFTWARE\ Classes. b. HKEY_CURRENT_USERS Hive ini merujuk pada bagian HKEY_USERS, sesuai dengan pengguna (user) yang sedang aktif dan berisi informasi seperti nama logon, pengaturan desktop dan pengaturan start menu. c. HKEY_LOCAL_MACHINE Hive ini berisi informasi spesifik komputer tentang jenis perangkat keras (hardware), perangkat lunak (software) dan pilihan-pilihan yang berkaitan dengan komputer tersebut. Dan informasi ini digunakan untuk semua user pada komputer itu. d. HKEY_USERS Berisi informasi tentang desktop dan user setting untuk tiap user yang berhak login ke komputer tersebut. Tiap user mempunyai sebuah subkey. Jika hanya terdapat satu user, maka nama subkey tersebut adalah “.default”. e. HKEY_CURRENT_CONFIG Berisi informasi tentang konfigurasi hardware yang berlaku saat itu, berhubungan dengan HKEY_LOCAL_MACHINE f. HKEY_DYN_DATA
33
Merujuk suatu bagian dari HKEY_LOCAL_MACHINE, untuk digunakan dengan fitur plug and play pada windows, bagian ini bersifat dinamis dan akan berubah ketika suatu alat ditambahkan atau dipindahkan dari sistem.
2.6.3 Value Masing-masing value disimpan dengan beberapa jenis data, yang paling sering digunakan adalah: 1. REG_BINARY Jenis ini menyimpan nilai sebagai data biner. Kebanyakan informasi komponen perangkat keras disimpan sebagai data biner, dan dapat dilihat pada sebuah editor dalam format hexadecimal. 2. REG_DWORD Jenis ini mewakili data dengan empat byte nomor dan biasanya digunakan untuk nilai-nilai Boolean seperti 0 yang berarti disabled dan 1 yang berarti enabled. 3. REG_SZ Jenis ini adalah suatu string standar, yang digunakan untuk mewakili value yang bisa dibaca manusia.
35
BAB III ANALISIS DAN PERANCANGAN
3.1 Analisis Untuk menggunakan aplikasi antivirus ini, ada beberapa kebutuhan dasar system yang akan digunakan oleh pengguna, antara lain : 1. Aplikasi ini dapat digunakan untuk mendeteksi pencarian file, menghentikan pencarian, menghapus file atau folder yang terjangkit virus backdoor sesuai dengan data signature, membaca data signature dan melihat hasil deteksi. Data yang di cari berdasarkan nilai crc dari file. 2. Menambah data signature dan menyimpannya. 3. Melakukan pencegahan dari serangan backdoor serta menggagalkan cara kerja backdoor, seperti : a. Menampilkan serta menghentikan proses backdoor yang sedang berjalan. b. Memeriksa dan mengembalikan nilai registry yang dimanipulasi oleh backdoor ke nilai sebenarnya. Untuk mendeskripsikan use case apa saja dan aktor yang terlibat dalam use case tersebut, dapat dilihat pada Tabel 3.1.
36
Tabel 3.1 Kebutuhan sistem, aktor dan use case pada aplikasi antivirus. No 1
2 3
3.1.1
Kebutuhan Sistem Aplikasi ini dapat digunakan untuk mendeteksi pencarian, menghentikan pencarian, menghapus file atau folder yang dianggap backdoor sesuai dengan signature, kemudian membaca data signature dan melihat hasil deteksi Menambah signature dan menyimpan system yang telah dilengkapi fungsi untuk membaca file berdasarkan nilai crc Melakukan pencegahan system computer dari serangan backdoor atau menggagalkan cara kerja backdoor, sebagai berikut: a. Menampilkan dan menghentikan proses backdoor yang sedang berjalan. b. Memeriksa dan mengembalikan nilai registry yang dimanipulasi oleh backdoor ke nilai sebenarnya.
Aktor Use Case Pengguna Melakukan pendeteksian
Pengguna Mengelola signature
data
Pengguna Melakukan pencegahan dan penggagalan
Diagram Use Case Untuk orang yang berada diluar system, diagram use case dapat menjelaskan
menfaat sistem, diagram use case juga menunjukan fungsionalitas suatu sistem atau kelas dan bagaimana sistem berinteraksi dengan dunia luar. Berdasarkan Tabel 3.1 di atas secara umum pemodelan use case pada aplikasi ini dapat dilihat pada Gambar 3.1. Aplikasi Antivirus
Melakukan pendeteksian
Pengguna
Mengelola data signature
Melakukan pencegahan dan penggagalan
Gambar 3.1 Diagram use case aplikasi antivirus.
37
Penjelasan dari masing-masing use case dari Gambar 3.1 dapat dilihat berikut ini. Use Case Deskripsi Singkat
Melakukan pendeteksian Use case dapat digunakan untuk melakukan pencarian dan penghapusan file atau folder yang dianggap
Aktor Kondisi Awal
backdoor. Pengguna Sistem memeriksa keberadaan file scan.dat pada path yang sama dengan aplikasi. Jika tidak ditemukan maka sistem membuat file scan.dat yang berisi data-data
Aliran Utama
penanda (signature) sesuai dengan kode program. 1. Pengguna memilih menu pendeteksian. 2. Pengguna menekan tombol scan untuk melakukan pencarian. 3. Sistem melakukan pencarian file atau folder, mencatat waktu awal pencarian dan menampilkan proses pencarian tersebut. 4. Pengguna menekan tombol stop untuk menghentikan pencarian. 5. Sistem langsung menghentikan proses pencarian, mencatat waktu akhir pencarian dan menampilkan pemberitahuan apakah proses pencarian tersebut menemukan file yang dianggap backdoor atau tidak. 6. Pengguna menekan tombol delete untuk melakukan penghapusan file hasil proses pencarian. 7. Sistem menghapus setiap file yang terseleksi dari
38
daftar hasil pencarian. 8. Pengguna menekan tombol reload untuk membaca kembali data signature. 9. Sistem membaca data signature yang ada (baik yang telah
mengalami
perubahan
atau
tidak)
dan
menampilkan pesan. 10. Pengguna
menekan
tombol
report
untuk
menampilkan form laporan pendeteksian. Aliran Alternatif
11. Sistem menampilkan form laporan dan isinya. 1. Pada langkah 2, jika pengguna tidak mengisi alamat path atau alamat path tidak mengandung karakter ”:\” maka sistem menampilkan pesan. 2. Pada langkah 3, jika selama proses pencarian sistem menemukan file atau folder yang memiliki nilai penanda sama dengan data signature maka sistem menampilkan file atau folder tersebut pada daftar hasil pencarian. 3. Pada langkah 3, apabila proses pencarian telah selesai maka sistem melanjutkan ke langkah 5. 4. Pada langkah 7, apabila daftar hasil pencarian tidak ada file atau pengguna tidak memilih file yang ada pada daftar kemudian pengguna melakukan langkah 6 maka sistem menampilkan pesan. 5. Pada langkah 11, apabila pengguna tidak melakukan langkah 2 atau sistem tidak melakukan langkah 3
39
maka sistem tetap menampilkan form laporan namun Kondisi Akhir
isinya kosong. Sistem menampilkan file-file yang dianggap backdoor, pengguna dapat melakukan penghapusan terhadap filefile
tersebut
dan
pengguna
dapat
melihat
hasil
pendeteksian. Use Case Deskripsi Singkat
Mengelola data signature Use case ini memungkinkan pengguna untuk menambah dan menyimpan data penanda (signature) sendiri, dimana sistem telah menyediakan fungsi untuk membaca nilai crc dari file guna memudahkan pengguna dalam
Aktor Kondisi Awal
menambah data signature tersebut. Pengguna Kondisi awal use case ini sama seperti kondisi awal pada use case melakukan pendeteksian, yang membedakan pada use case ini menggunakan fungsi parse dalam
Aliran Utama
pembacaan file scan.dat tersebut. 1. Pengguna memilih menu signature. 2. Pengguna menekan tombol add untuk menambah data signature. 3. Sistem menambahkan data yang telah diisikan oleh pengguna ke dalam daftar. 4. Pengguna menekan tombol save untuk menyimpan data signature. 5. Sistem menyimpan data-data yang terdapat dalam daftar ke bentuk file dengan nama scan.dat dan
40
menampilkan pesan bahwa data tersebut telah tersimpan. 6. Pengguna menampilkan
menekan form
tombol CRC
CRC
guna
untuk
memudahkan
pengguna untuk mendapatkan nilai CRC dari suatu file. 7. Sistem Aliran Alternatif
menampilkan
form
CRC
dan
dapat
menampilkan nilai CRC 1. Pada langkah 3, apabila kursor berada diantara nama, tipe atau nilai signature pada aplikasi dan pengguna tanpa menuliskan apapun kemudian pengguna melakukan langkah 2 maka sistem tetap menambahkan data tersebut dengan nilai kosong. 2. Pada langkah 7, jika pengguna tidak memilih file
Kondisi Akhir
maka sistem tidak menampilkan nilai CRC. File scan.dat mengalami perubahan apabila terjadi proses penambahan data.
Use Case Deskripsi Singkat
Melakukan pencegahan dan penggagalan Use case ini memungkinkan pengguna untuk melakukan pencegahan terhadap ancaman backdoor komputer dan mengembalikan nilai registry yang dirubah oleh backdoor
Aktor Kondisi Awal
tersebut. Pengguna Sistem menampilkan file, proses atau aplikasi yang
Aliran Utama
sedang berjalan pada komputer. 1. Pengguna memilih menu option. 2. Pengguna memilih tombol opsi yang ada.
41
3. Sistem menampilkan file, proses atau aplikasi yang sedang berjalan berdasarkan opsi yang dipilih. 4. Pengguna menekan tombol kill process untuk menghentikan file, proses atau aplikasi yang sedang berjalan. 5. Sistem langsung menghentikan file, proses atau aplikasi yang sedang berjalan dan menghapusnya dari daftar. 6. Pengguna
menekan
tombol
refresh
untuk
menampilkan kembali file, proses atau aplikasi yang sedang berjalan. 7. Sistem menampilkan file, proses atau aplikasi yang sedang berjalan. 8. Pengguna menekan tombol konfigurasi windows untuk menampilkan form konfigurasi windows. 9. Sistem menampilkan form konfigurasi windows. 10. Pengguna menekan tombol restart untuk start ulang komputer. 11. Sistem melakukan start ulang komputer. 12. Pengguna
menekan
tombol
shutdown
untuk
mematikan komputer. 13. Sistem mematikan komputer. 14. Pengguna menekan tombol command prompt untuk mengakses aplikasi DOS.
42
Aliran Alternatif
15. Sistem menampilkan aplikasi tersebut. 1. Pada langkah 4, jika tidak ada file, proses atau aplikasi
yang
dipilih
maka
sistem
tidak
menghentikan file, proses atau aplikasi yang sedang berjalan tersebut dan tidak menghapusnya dari daftar. 2. Pada langkah 9, sebelum menampilkan form sistem melakukan
pengecekan
registry
mana
yang
mengalami perubahan kemudian ditampilkan dalam bentuk kotak periksa pada form konfigurasi tersebut. Jika kotak periksa tersebut diklik maka sistem melakukan manipulasi sebaliknya jika tidak diklik Kondisi Akhir
maka sistem tidak melakukan manipulasi. Pengguna dapat menghapus file, proses atau aplikasi yang dianggap sebagai backdoor.
3.1.2Diagram Aktifitas Diagram aktifitas adalah pemodelan aliran kerja (workflow) sebuah proses, atau urutan aktifitas dalam suatu proses. Diagram ini yang akan memudahkan pengguna untuk memahami alur proses tersebut dan akan menggambarkan langkah-langkah setiap aplikasi.
1.1
Diagram Aktifitas Untuk Use Case Melakukan Pendeteksian Tabel 3.2 menunjukkan aktifitas yang ditemukan dari dokumen use case
melakukan pendeteksian.
43
Tabel 3.2 Mencari aktifitas di aliran utama dan alternatif pada use case melakukan pendeteksian. No 1 2 3
4 5
6 7 8 9 10 11 12 13
14
15
16
Use case Memilih menu pendeteksian.
Activity State Memilih Menu pendeteksian Menekan tombol scan untuk melakukan pencarian. Menekan tombol scan Sistem melakukan pencarian file atau folder, mencatat Melakukan pencarian waktu awal pencarian dan menampilkan proses file mencatat waktu pencarian tersebut. awal pencarian menampilkan proses pencarian Menekan tombol stop untuk menghentikan pencarian. Menekan tombol stop Sistem langsung menghentikan proses pencarian, Menghentikan mencatat waktu akhir pencarian dan menampilkan pencarian mencatat pemberitahuan apakah proses pencarian tersebut waktu akhir pencarian menemukan file yang dianggap backdoor atau tidak. menampilkan pemberitahuan Menekan tombol delete untuk melakukan penghapusan Menekan tombol delete file hasil proses pencarian. Sistem menghapus setiap file yang terseleksi dari daftar Menghapus file hasil pencarian. Pengguna menekan tombol reload untuk membaca Menekan tombol kembali data signature. reload Sistem membaca data signature yang ada (baik yang Membaca data telah mengalami perubahan atau tidak) dan signature menampilkan menampilkan pesan. pesan Menekan tombol report untuk menampilkan form Menekan tombol report laporan pendeteksian. Sistem menampilkan form laporan dan isinya. Menampilkan form laporan Pada langkah 2, jika pengguna tidak mengisi alamat Menekan tombol scan path atau alamat path tidak mengandung karakter ”:\” menampilkan pesan maka sistem menampilkan pesan. Pada langkah 3, jika selama proses pencarian sistem Melakukan pencarian menemukan file atau folder yang memiliki nilai file menampilkan file penanda sama dengan data signature maka sistem menampilkan file atau folder tersebut pada daftar hasil pencarian. Pada langkah 3, apabila proses pencarian telah selesai Melakukan pencarian maka sistem melanjutkan ke langkah 5. file atau folder menghentikan pencarian mencatat waktu akhir menampilkan pemberitahuan Pada langkah 7, apabila daftar hasil pencarian tidak ada Menghapus file file atau pengguna tidak memilih file yang ada pada menampilkan pesan daftar kemudian pengguna melakukan langkah 6 maka sistem menampilkan pesan. Pada langkah 11, apabila pengguna tidak melakukan Menampilkan form langkah 2 atau sistem tidak melakukan langkah 3 maka laporan sistem tetap menampilkan form laporan namun isinya
44
kosong.
Atas dasar aktifitas di atas, selanjutnya dibuat diagram aktifitas di mana diagram ini menunjukkan transisi di antara aktifitas. Lihat pada Gambar 3.2.
45
Mencatat waktu awal pencarian Menampilkan pesan
Memilih Menu Pendeteksian
Pilih?
Ya
Melakukan pencarian file
Tidak Menekan Tombol Scan
Apakah alamat path terisi?
Menampilkan proses pencarian
Ya
Tidak Menemukan file Backdoor Tidak
Ya
Menampilkan file
Apakah proses telah selesai?
Tidak
Ya Pilih?
Ya
Menekan Tombol Stop
Menghentikan pencarian
Tidak Mencatat waktu akhir pencarian Menampilkan pesan
Menampilkan pemberitahuan
Tidak Pilih?
Ya
Tidak Pilih?
Ya
Menekan Tombol Delete Menekan Tombol Reload
Apakah ada file yang dihapus?
Ya
Menghapus file
Membaca data signature
Tidak Menampilkan pesan
Pilih?
Ya
Menekan Tombol Report
Menampilkan form laporan
Tidak Ya
Ada lagi yang ingin dilakukan? Tidak
Gambar 3.2 Diagram aktifitas untuk use case melakukan pendeteksian.
46
Diagram aktifitas dapat digunakan untuk mendeteksi, oleh karena itu tampilan awal aplikasi ini ada menu pendeteksi. Setelah melakukan deteksi, pengguna dapat melakukan aktivitas seperti: 1. Melakukan pencarian Berdasarkan Gambar 3.2 setelah menekan tombol scan, pengguna harus mengetahui kondisi alamat path telah terisi atau belum yaitu dengan melihat file mengandung karakter “:\”. Setelah pencarian aka nada tulisan “please wait” selama proses berlangsung. Pada saat system melakukan pencarian, system akam manampilkan file selama proses berlangsung, tapi kalau proses tidak sempurna atau system tidak menampilkan file maka proses tersebut berada pada kondisi yang salah. 2. Menghentikan pencarian Berdasarkan Gambar 3.2 untuk menghentikan pencarian hanya dengan menekan tombol stop dan kemudian system menghentikan pencarian serta mencatat waktu akhir proses pencarian. 3. Menghapus hasil pencarian Berdasarkan Gambar 3.2 untuk menghapus hasil pencarian hanya dengan menekan tombol delete. Setelah itu pengguna akan diminta memilih file-file yang dianggap backdoor oleh system. Jika tidak ada file yang dimaksud, maka system akan menampilkan pesan “Tidak Ada File Yang Dipilih” 4. Membaca data signature Berdasarkan Gambar 3.2 di atas pengguna dapat menggunakan fungsi ini dengan menekan tombol reload kemudian sistem melakukan pembacaan terhadap
47
data penanda (signature) yang ada saat itu dan menampilkan pesan ”Signature Telah Diperbarui”. 5. Menampilkan hasil pendeteksian. Fungsi dapat digunakan dengan menekan tombol report kemudian system akan menampilkan form laporan. Jika tidak digunakan, maka system tetap menampilkan form tersebut tapi isinya kosong. 1.2
Diagram Aktifitas Untuk Use Case Mengelola Data Signature Tabel 3.3 menunjukkan pengelolaan data signature dari dokumen use case.
Tabel 3.3 Mengelola data signature dari dokumen use case. No 1 2 3 4 5
6 7 8
9
Use case memilih menu signature.
Activity State MemilihMenu signature menekan tombol add untuk menambah data signature. Menekan tombol add Sistem menambahkan data yang telah diisikan oleh Menambah data pengguna ke dalam daftar. Pengguna menekan tombol save untuk menyimpan data Menekan tombol save signature. Sistem menyimpan data-data yang terdapat dalam Menyimpan data daftar ke bentuk file dengan nama scan data dan menampilkan pesan menampilkan pesan bahwa data tersebut telah tersimpan. mengklik tulisan CRC untuk menampilkan form CRC Menekan tombol CRC guna memudahkan pengguna untuk mendapatkan nilai CRC dari suatu file. Sistem menampilkan form CRC dan menampilkan nilai Menampilkan form CRC CRC menampilkan nilai CRC Pada langkah 3, apabila kursor berada diantara nama, Menambah data tipe atau nilai signature pada aplikasi dan pengguna tanpa menuliskan apapun kemudian pengguna melakukan langkah 2 maka sistem tetap menambahkan data tersebut dengan nilai kosong. Pada langkah 7, jika pengguna tidak memilih file maka Menampilkan form sistem tidak menampilkan nilai CRC. CRCtidak menampilkan nilai CRC
Atas dasar aktifitas di atas, selanjutnya dibuat diagram aktifitas di mana diagram ini menunjukkan transisi di antara aktifitas. Lihat pada Gambar 3.3
48
.
Memilih Menu Signature
Pilih?
Ya
Menekan Tombol Add
Menambah data
Menekan Tombol Save
Menyimpan data
Tidak Pilih?
Ya
Tidak
Menampilkan pesan Pilih?
Ya
Tidak
Menekan Tombol CRC
Menampilkan form CRC
Ada file yang dipilih?
Ya
Menampilkan nilai CRC
Tidak Ya
Ada lagi yang ingin dilakukan?
Tidak menampilkan nilai CRC
Tidak
Gambar 3.3 Diagram aktifitas untuk use case mengelola data signature.
Dalam diagram aktifitas untuk use case mengelola data signature terdapat beberapa menu yaitu menu signature. Setelah itu, pengguna dapat melakukan aktifitas seperti : 1. Menambah data signature Berdasarkan Gambar 3.3 data signature dapat digunakan dengan menekan tombol add yang kemudian akan ditambahkan secara otomatis oleh system dengan syarat data mengandung tipe dan nilai signaturenya. Jika tidak digunakan maka system menambah data dengan nilai kosong.
49
2. Menyimpan data signature Seperti yang terlihat pada Gambar 3.3 di atas, penyimpanan data signature dengan menekan tombol save kemudian system memproses penyimpanan data sampai terlihat tulisan data telah tersimpan. 3. Memperoleh nilai crc. Untuk memperoleh nilai crc dapat menekan tombol crc yang kemudian akan tampil form crc dengan syarat pengguna memilih file pada form crc atau sebaliknya apabila pengguna tidak memilih file maka system tidak akan menampilkan nilai crc.
1.3
Diagram Aktifitas Untuk Use Case Melakukan Pencegahan dan Penggagalan Tabel 3.4 menunjukkan aktifitas yang ditemukan dari dokumen use case
melakukan pencegahan dan penggagalan. Tabel 3.4 Mencari aktifitas di aliran utama dan alternatif pada use case melakukan pencegahan dan penggagalan. No 1 2 3 4 5 6
Use case memilih menu option. memilih tombol opsi yang ada. Sistem menampilkan file, proses atau aplikasi yang sedang berjalan berdasarkan opsi yang dipilih. menekan tombol kill process untuk menghentikan file, proses atau aplikasi yang sedang berjalan. Sistem langsung menghentikan file, proses atau aplikasi yang sedang berjalan dan menghapusnya dari daftar. menekan tombol refresh untuk menampilkan kembali file, proses atau aplikasi yang sedang berjalan.
Activity State Memilih Menu option Memilih tombol opsi Menampilkan file, proses atau aplikasi Menekan tombol kill process Menghentikan atau aplikasi
file,
proses
Menekan tombol refresh
50
7 8 9 10 11 12 13 14 15 16
17
Sistem menampilkan file, proses atau aplikasi yang sedang berjalan. menekan tombol konfigurasi windows untuk menampilkan form konfigurasi windows. Sistem menampilkan form konfigurasi windows.
Menampilkan file, proses atau aplikasi Menekan tombol konfigurasi windows Menampilkan form konfigurasi windows menekan tombol restart untuk start ulang Menekan tombol restart komputer. Sistem melakukan start ulang komputer. Start ulang komputer menekan tombol shutdown untuk mematikan Menekan tombol shutdown komputer. Sistem mematikan komputer. Mematikan komputer menekan tombol command prompt untuk Menekan tombol command mengakses aplikasi DOS. prompt Sistem menampilkan aplikasi tersebut. Menampilkan aplikasi Pada langkah 4, jika tidak ada file, proses atau Menekan tombol kill process, aplikasi yang dipilih maka sistem tidak tidak menghentikan file, menghentikan file, proses atau aplikasi yang proses atau aplikasi sedang berjalan tersebut dan tidak menghapusnya dari daftar. Pada langkah 9, sebelum menampilkan form Menampilkan form, sistem melakukan pengecekan registry mana melakukan pengecekan, yang mengalami perubahan kemudian melakukan manipulasi, tidak ditampilkan dalam bentuk kotak periksa pada melakukan manipulasi form konfigurasi tersebut. Jika kotak periksa tersebut diklik maka sistem melakukan manipulasi sebaliknya jika tidak diklik maka sistem tidak melakukan manipulasi.
Atas dasar aktifitas di atas, selanjutnya dibuat diagram aktifitas di mana diagram ini menunjukkan transisi di antara aktifitas. Lihat pada Gambar 3.4.
51
Memilih Menu Option
Pilih?
Menampilkan file, proses atau aplikasi yang sedang berjalan
Memilih Tombol Opsi
Ya
Tidak
Pilih?
Menekan Tombol Kill Process
Ya
Tidak
Ada file, proses atau aplikasi yang dipilih? Tidak
Menghentikan file, proses atau aplikasi
Ya
Tidak menghentikan file, proses atau aplikasi
Pilih?
Menekan Tombol Refresh
Ya
Tidak Pilih?
Ya
Menekan Tombol Konfigurasi Windows
Melakukan pengecekan
Tidak
Menampilkan form konfigurasi windows
Ada kotak periksa yang diklik? Tidak
Pilih?
Ya
Ya
Melakukan manipulasi
Tidak melakukan manipulasi
Menekan Tombol Restart
Start ulang komputer
Menekan Tombol Shutdown
Mematikan komputer
Tidak Pilih?
Ya
Tidak Pilih?
Ya
Menekan Tombol Command Prompt
Menampilkan aplikasi
Tidak
Ya
Ada lagi yang ingin dilakukan?
Tidak
Gambar 3.4 Diagram aktifitas untuk use case melakukan pencegahan dan penggagalan.
52
Ada beberapa menu dalam diagram aktivitas untuk use case melakukan pencegahan dan penggagalan, diantaranya adalah menu option. Setelah pengguna menekan menu option, pengguna dapat melakukan aktivitas seperti: 1. Menampilkan file atau proses yang sedang berjalan Yaitu dengan memilih salah satu tombol opsi yang kemudian akan diproses dan ditampilkan kembali oleh system. 2. Menghentikan file atau proses Untuk menghentikan file atau proses, pengguna dapat menekan tombol kill process maka system yang sedang berjalan akan diberhentikan dengan asumsi pengguna telah memilih file atau proses tersebut, kalau tidak file tidak dapat dihentikan. 3. Mengembalikan nilai registry Berdasarkan Gambar 3.4 untuk mengembalikan nilai registry yaitu dengan menekan tombol kofigurasi windows. Akan tetapi sebelum form konfigurasi tampil, system melakukan pengecekkan dan pengguna dapat memanipulasi nilai registry dengan menekan tombol kotak periksa. 4. Menampilkan kembali file, proses atau aplikasi Yaitu dengan menekan tombol refresh maka system menampilkan file, proses atau aplikasi yang sedang berjalan. 5. Start ulang komputer Berdasarkan Gambar 3.4 di atas pengguna dapat menggunakan fungsi ini dengan menekan tombol restart maka sistem melakukan start ulang.
53
6. Mematikan komputer Berdasarkan Gambar 3.4 di atas pengguna dapat menggunakan fungsi ini dengan menekan tombol shutdown maka sistem mematikan komputer. 7. Menampilkan aplikasi command prompt Berdasarkan Gambar 3.4 di atas pengguna dapat menggunakan fungsi ini dengan menekan tombol command prompt maka sistem menampilkan aplikasi command prompt.
3.1.3Diagram Sekuensial Diagram sekuensial adalah diagram yang bisa menggambarkan interaksi antara objek di dalam dan di luar sistem berupa pesan atau message.
3.1.3.1 Diagram Sekuensial Untuk Use Case Melakukan Pendeteksian Setelah alamat path telah terisi atau mengandung karakter “:\” data tersebut dapat di scan dan system akan mencatat waktu awal proses yang kemudian menampilkan pesan “please wait”, apabila alamat path belum terisi, maka system akan menampilkan pesan “alamat path belum terisi”. Apabila selama proses pencarian ada file yang mengandung data signature maka system akan menampilkannya ke daftar hasil pencarian. Akan tetapi, apabila tidak ditemukan data tersebut maka system akan menghentikan proses pencarian. Proses pencarian juga bisa dihentikan dengan menekan tombol stop dan mencatat waktu akhir proses pencarian serta menampilkan pesan.
54
Data yang dicari bisa dihapus dengan menekan tombol delete. Apabila file tdak terdeteksi dan pengguna menekan tombol delete maka system akan menampilan pesan ”Tidak Ada File Yang Dipilih”. Data signature bisa di baca dengan menekan tombol reload kemudian sistem membaca data signature yang ada dan menampilkan pesan ”Signature Telah Diperbarui”. Pengguna dapat melihat hasil pendeteksian dengan menekan tombol report dengan asunsi pengguna melakukan proses pencarian maka sistem menampilkan form laporan dan isinya, tetapi jika pengguna tidak melakukan proses pencarian maka sistem tetap menampilkan form laporan tersebut namun isinya kosong. Untuk lebih jelasnya dapat dilihat pada halaman 55 Gambar 3.5.
3.1.3.2 Diagram Sekuensial Untuk Use Case Mengelola Data Signature Data signature bisa ditambahkan dengan menekan tombol add, kemudian system menambahkan data tersebut. Dan data signature juga bisa disimpan dengan menekan tombol save, system akan menampilkan pesan “data signature telah tersimpan” Pengguna dapat memperoleh nilai crc dari suatu file dengan menekan tombol crc kemudian sistem menampilkan form crc tersebut. Kemudian jika pengguna memilih file pada form crc maka sistem langsung menampilkan nilai crc dari file tersebut sebaliknya jika pengguna tidak memilih maka sistem tidak menampilkan nilai crcnya. Untuk lebih jelasnya dapat dilihat pada halaman 56 Gambar 3.6.
55
Aktor / Pengguna
Tombol Add
Menu Signature
Tombol Save
Tombol CRC
Memilih
Menekan Menambah data
Menyimpan data
Menekan Menampilkan Pesan Menekan Menampilkan form CRC
alt Memilih
Menampilkan nilai crc [else]
Tidak menampilkan nilai crc
Gambar 3.6 Diagram sekuensial untuk use case mengelola data signature.
3.1.3.3 Diagram Sekuensial Untuk Use Case Melakukan Pencegahan dan Penggagalan File atau proses yang sedang berjalan bisa ditampilkan dengan memilih salah satu tombol opsi kemudian sistem langsung menampilkan file atau proses sesuai dengan opsi yang dipilih. Kemudian untuk menghentikan proses yaitu dengan menekan tombol kill process dengan asumsi bahwa file atau proses tersebut telah dipilih pengguna dari
56
daftar, tetapi jika pengguna tidak memilih maka system tidak dapat menghentikan prses. Pengguna dapat melakukan pengecekan dan pengembalian nilai registry dengan menekan tombol konfigurasi windows kemudian sistem melakukan pengecekan lalu menampilkan form konfigurasi windows ke pengguna. Setelah itu pengguna dapat mengklik kotak periksa kemudian sistem melakukan manipulasi tetapi jika pengguna tidak mengklik maka sistem tidak melakukan manipulasi. Pengguna dapat menampilkan kembali file, proses atau aplikasi yang sedang berjalan dengan menekan tombol refresh. Pengguna juga dapat start ulang komputer dan mematikan komputer dengan menekan tombol restart dan tombol shutdown. Pengguna dapat menampilkan aplikasi command prompt dengan menekan tombol command prompt. Untuk lebih jelasnya dapat dilihat pada Gambar 3.7.
4.2 Perancangan Tampilan Pada aplikasi ini terdiri dari 3 menu, dimana dari menu-menu tersebut memiliki fungsi yang berbeda-beda dan dapat dijalankan sekaligus.
4.1
Rancangan Menu Pendeteksian Pada rancangan aplikasi ini terdapat 3 menu antara lain pendeteksian,
signature dan option. Rancangan pertama pada aplikasi ini adalah rancangan menu pendeteksian seperti terlihat pada gambar 3.8.
57
x Logo
Header Aplikasi Menu 1
Menu 2
Menu 3
Browse
Textbox
Label2
Text1
List
Tombol1
Tombol2
Tombol3
Tombol4
Tombol5
Label1 Gambar 3.8 Rancangan menu pendeteksian dari aplikasi. Dari gambar 3.8 dapat dilihat rancangan ini terdiri dari: 1. Header Aplikasi dan logo: disini terdapat logo aplikasi dan nama aplikasi. 2. Menu1-3: menyatakan menu yang terdapat pada aplikasi ini. 3. Textbox: merupakan alamat direktori yang akan di-scan setelah pengguna memilih pada menu browse. 4. tombol 1-5: menyatakan pilihan eksekusi yang dapat dilakukan oleh pengguna pada menu ini. 5. List: menyatakan data pencarian (scanning) yang sesuai dengan data signature. 6. Label1 dan Label2: merupakan tampilan yang akan muncul ketika pengguna melakukan pencarian (scanning). Pada label1 akan menampilkan tulisan #Anti backdoor# Waiting for instruction sebelum pengguna melakukan pencarian.
58
4.2
Rancangan Menu Signature x Logo
Header Aplikasi Menu 1
Menu 2
Menu 3
Text Text Text Text Text
List 1
Text Tombol6
Tombol 7
List 2
List 3
Tombol 8
Label1 Gambar 3.9 Rancangan menu signature dari aplikasi.
Dari gambar 3.9 dapat dilihat rancangan ini terdiri dari: 1. List 1-3: menyatakan hasil eksekusi. 2. Tombol 6-8: menyatakan pilihan eksekusi yang dapat dilakukan oleh pengguna pada menu ini.
59
4.3
Rancangan Menu Option x Logo
Header Aplikasi Menu 1
Menu 2
Menu 3
Logo proses Tombol9
Tombol1 0
Tombol1 Tombol12 Tombol1 Tombol1
Text
Text
Text
Label1 Gambar 3.10 Rancangan menu option dari aplikasi. Dari gambar 3.10 dapat dilihat rancangan ini terdiri dari: 1. Tombol radio: tombol radio yang dapat di klik untuk dipilih.
2. Tombol 9-14: menyatakan pilihan eksekusi yang dapat dilakukan oleh pengguna pada menu ini.
4.4
Rancangan Tampilan Form CRC Title aplikasi drive
dir
x
CRC32
file
Gambar 3.11 Rancangan tampilan form CRC dari aplikasi.
Text
60
Dari Gambar 3.11 dapat dilihat rancangan ini terdiri dari: 1. drive: menyatakan drive yang aktif. 2. dir: menyatakan direktori pada drive yang ditunjuk. 3. file: menyatakan isi dari setiap direktori yang dipilih.
4.5
Rancangan Tampilan Form Report Title aplikasi
x
Textbox
Tombol1
Tombol16
Gambar 3.12 Rancangan tampilan form report dari aplikasi. Dari gambar 3.12 dapat dilihat rancangan ini terdiri dari: 1. Textbox: menyatakan hasil laporan. 2. tombol 15-16: menyatakan pilihan eksekusi yang dapat dilakukan oleh pengguna pada tampilan ini.
61
4.6
Rancangan Tampilan Form Konfigurasi Windows Text
Text
Text
Text
Text
Text
Text
Text
Text
OK
Text
OK
Text
Text
OK
Text
Tombol
Tombol
Tombol
Tombol
Gambar 3.13 Rancangan tampilan form konfigurasi windows dari aplikasi. Dari Gambar 3.13 dapat dilihat rancangan ini terdiri dari beberapa kotak periksa (checkbox). Tombol 17-20 menyatakan pilihan eksekusi yang dapat dilakukan oleh pengguna pada tampilan ini.
62
4.7
Rancangan Tampilan Form Lihat Registry
Title Aplikasi Menu editor
List1
Text Text
Tombol21
Tombol22
Tombol23
Tombol24
Gambar 3.14 Rancangan tampilan form lihat registry dari aplikasi. Dari Gambar 3.14 dapat dilihat rancangan ini terdiri dari: 1. List1: menyatakan daftar dan nilai dari key yang ada pada registry. 2. Tombol 21-24: menyatakan pilihan eksekusi yang dapat dilakukan oleh pengguna pada tampilan ini.
63
BAB IV IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi Pada sub bab ini penulis akan membahas tentang pengkodean dan desain antarmuka. 4.1.1 Pengkodean Pengkodean diperlukan agar rancangan dapat diterjemahkan ke dalam bentuk mesin dan dapat dijalankan. Pada sub bab ini penulis akan memberikan penggalan baris program untuk setiap menu, diantaranya: 1. Menu Pendeteksian Pada menu ini pengguna bisa melakukan pencarian, menghentikan pencarian, menghapus hasil pencarian, membaca data penanda (signature) dan melihat hasil pendeteksian seperti yang telah dijelaskan pada bab tiga. a. Melakukan pencarian Proses pencarian akan berjalan apabila pengguna menekan tombol scan pada aplikasi. Adapun baris program pada tombol scan adalah sebagai berikut. Private Sub Label6_Click() On Error Resume Next Dim xmount As String Label6.Enabled = False List1.Enabled = False If Mid(txtPath.Text, 2, 2) <> ":\" Then MsgBox "Alamat Path Belum Terisi", vbCritical GoTo ProcError End If
63
64
On error resume next yang terdapat pada baris 2 menyatakan bahwa apabila terjadi kesalahan, maka mengacuhkan kesalahan tersebut untuk kemudian mengakses baris berikutnya. Pada baris 6 di atas menyatakan kondisi jika karakter ke 2 dan ke 3 pada txtPath bukan string ”:\” maka muncul pesan ”Alamat Path Belum Terisi” kemudian langsung menuju ProcError. If chkOld.Value = Checked Then lstFound.Clear List1.Clear End If StopIt = False frmTampilan.Show lblWait.Visible = True frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Scanning Started At: " & Date & " - " & Time & " ]" & vbCrLf frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Full Path: " & txtPath.Text & " ]" & vbCrLf FindFiles txtPath.Text, (DatFile(0)(2)), wName, wType, wSign, (DatFile(0)(0)), (DatFile(0)(1)), CRC2, lstFound, List1, frmTampilan.lblStatus, frmLog.txtLog If lstFound.ListCount > 1 Then xmount = " files." Else xmount = " file." End If
Kemudian jika chkOld tercentang maka data yang ada di lstFound dan List1 dikosongkan kemudian mengatur variabel StopIt menjadi false, menampilkan form frmTampilan dan menampilkan lblWait dengan tulisan ”Please Wait......”. Prosedur kemudian menambahkan teks ”[Scanning started at: tanggal – jam]” pada txtLog yang berada pada form frmLog, dimana tanggal dan jam disesuaikan dengan waktu saat pengguna menekan tombol scan, juga menambahkan teks ”[Full Path: drive and directory]” dimana drive dan direktori disesuaikan dengan nilai yang ada pada txtPath. Prosedur juga mengeksekusi fungsi FindFiles dengan mengisi variabel MyPath dengan data pada txtPath, MyWild dengan data yang ada pada array ’DatFile(0)(2)’,
65
mengatur variabel SignName dengan wName, variabel SignType dengan wType, variabel signature dengan wSign, variabel SizeLimit dengan data yang ada pada array ’DatFile(0)(0)’, variabel ScMode dengan data yang ada pada array ’DatFile(0)(1)’, variabel MyCRC dengan UserControl CRC2, variabel MyList dengan lstFound, variabel NameList dengan List1, variabel MyLabel dengan lblStatus dan mengatur variabel MyLog dengan txtLog pada form frmLog. Jika jumlah item pada lstFound lebih dari 1 maka merubah nilai variabel xmount menjadi ”Files” jika tidak maka nilai variabel xmount menjadi ”File”. If StopIt = False Then frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Scanning Finished At: " & Date & " - " & Time & " ]" & vbCrLf & vbCrLf Else frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Scanning Stopped By User At: " & Date & " - " & Time & " ]" & vbCrLf & vbCrLf End If MsgBox "Pencarian Selesai, menemukan " & lstFound.ListCount & xmount, vbInformation UpdateStatus List1.Enabled = True ProcError: Label6.Enabled = True lblWait.Visible = False frmTampilan.Hide End Sub
Jika variabel StopIt bernilai false maka menambahkan teks ”[Scanning Finished at: tanggal-jam]” pada txtLog yang berada pada form frmLog, di mana tanggal dan jam disesuaikan dengan waktu saat proses pencarian selesai, sebaliknya akan menambahkan teks ”[Scanning Stopped By User at: tanggal-jam]” di mana tanggal dan jam disesuaikan dengan waktu saat proses pencarian dihentikan oleh pengguna dengan menekan tombol stop. Prosedur kemudian menampilkan pesan ”Pencarian Selesai, Menemukan” dan melanjutkannya dengan nilai jumlah item pada lstFound dan nilai pada
66
variable xmount kemudian memanggil prosedur UpdateStatus, memberikan nilai pada List1 dengan ”True”, mengaktifkan kembali tombol scan, menyembunyikan lblWait dan form frmTampilan.
b. Menghentikan pencarian Pengguna dapat melakukan penghentian proses pencarian (scanning) dengan menekan tombol stop. Adapun baris program pada tombol stop adalah sebagai berikut: Private Sub Label7_Click() StopIt = True frmTampilan.Hide End Sub
Prosedur ini akan aktif saat pengguna menekan tombol stop. Dengan mengatur nilai true pada variabel StopIt, hal ini berkaitan dengan fungsi FindFiles pada modul fungsi yang akan memberi isyarat untuk menghentikan proses fungsi tersebut dan menyembunyikan form frmTampilan.
c. Menghapus hasil pencarian Pengguna dapat melakukan penghapusan terhadap file atau folder yang ditemukan dan dianggap sebagai backdoor berdasarkan data penanda (signature) yang ada. Pengguna dapat melakukan hal tersebut di atas dengan menekan tombol delete pada aplikasi. Adapun baris program pada tombol delete adalah sebagai berikut. Private Sub Label8_Click() On Error Resume Next Dim i As Integer If List1.SelCount = 0 Then MsgBox "Tidak Ada File yang dipilih", vbCritical Else Do Until List1.SelCount = 0
67
For i = 0 To List1.ListCount If List1.Selected(i) = True Then If DatFile(0)(1) = "MANUAL" Then WinExit _ GetFileName(lstFound.List(i), True) SetAttr lstFound.List(i), vbNormal SleepEx 1, False Kill lstFound.List(i) lstFound.RemoveItem (i) List1.RemoveItem (i) End If Next Loop End If UpdateStatus End Sub
Prosedur ini akan aktif ketika pengguna menekan tombol delete. Jika tidak ada data terpilih pada List1 maka menampilkan pesan ”Tidak Ada File yang dipilih”, sebaliknya jika ada maka menghapus setiap file terseleksi pada List1 dan langsung menghapusnya dari daftar kemudian prosedur ini mengeksekusi prosedur UpdateStatus.
d. Membaca data signature Pada saat pengguna menekan tombol reload maka aplikasi akan membaca kembali data penanda (signature). Adapun baris program pada tombol reload adalah sebagai berikut: Private Sub Label9_Click() LoadSignature True End Sub
Pada baris pertama dijelaskan bahwa prosedur ini akan dikerjakan pada saat tombol reload di tekan dan mengeksekusi function LoadSignature dan mengatur pesan menjadi true. Fungsi LoadSignature berfungsi untuk mengimport data dari file scan.dat ke wName, wType dan wSign. Jika nilai pesan adalah true maka
68
menampilkan pesan ”Signature telah diperbarui”. Untuk lebih jelasnya lihat kode program di bawah ini. Private Function LoadSignature(Message As Boolean) wName.Clear wType.Clear wSign.Clear Dim i As Long DatFile() = Parse(App.Path & "\scan.dat", ";") For i = 1 To UBound(DatFile) wName.AddItem (DatFile(i)(0)) wType.AddItem (DatFile(i)(1)) wSign.AddItem (DatFile(i)(2)) Next If Message =True Then MsgBox" Signature telah diperbarui", _ vbInformation End Function
e. Melihat hasil pendeteksian Pengguna dapat melihat laporan hasil scanning dengan menekan tombol report pada aplikasi. Adapun baris program pada tombol ini adalah sebagai berikut. Private Sub Label10_Click() frmLog.Show End Sub
Prosedur menampilkan form frmLog. Adapun baris program yang terdapat pada form frmLog adalah sebagai berikut. Option Explicit Private Sub cmdClear_Click() txtLog.Text = "" End Sub
Kalimat Option Explicit pada baris pertama memastikan agar seluruh variabel dideklarasikan. Baris kedua menandakan awal dari prosedur yang akan dikerjakan pada cmdClear_Click, suatu kejadian saat tombol clear di tekan. Memberikan nilai pada txtLog sama dengan kosong. Private Sub Image1_Click() frmLog.Hide End Sub
69
Kalimat pertama menandakan awal dari prosedur yang akan dikerjakan pada Image1_Click, suatu kejadian saat gambar tersebut di tekan. Menyembunyikan form frmLog tersebut. Private Sub cmdSave_Click() On Error GoTo akhir Dim Filename As String Dim f As Integer If Len(txtLog.Text) < 1 Then GoTo akhir CD1.Filter = "Text Documents (*.txt)|*.txt" CD1.ShowSave Filename = CD1.Filename If Len(Dir(Filename)) > 0 Then If MsgBox("File Sudah Ada, Mau rubah?",vbYesNo + vbQuestion)_ = vbNo Then GoTo akhir End If f = FreeFile Open Filename For Output As #f Print #f, txtLog.Text Close #f akhir: End Sub
Prosedur ini aktif saat pengguna mengklik tombol save pada form laporan, dengan menampilkan kotak dialog save as kemudian menyimpan semua text pada txtLog dengan nama yang telah pengguna tentukan pada kotak dialog save as.
2. Menu Signature Pada menu ini pengguna bisa menambah data penanda (signature), menyimpan data signature dan memperoleh nilai CRC. a. Menambah data signature Pengguna dapat menambah data penanda (signature) dengan menekan tombol add. Adapun baris program dari tombol add tersebut adalah sebagai berikut.
70
Private Sub Label4_Click() On Error Resume Next If Len(txtName) = 0 Or Len(txtType) = 0 Or Len(txtSign) = 0 Then Exit Sub If InStrRev(txtName, ";") > 0 Or InStrRev(txtType, ";") > 0 Or InStrRev(txtSign, ";") > 0 Then MsgBox "This sign ';' is not allowed", vbCritical Else lstName.AddItem (txtName) lstType.AddItem (txtType) lstSign.AddItem (txtSign) End If End Sub
Prosedur ini aktif saat pengguna menekan tombol add pada aplikasi, akan memeriksa jika salah satu dari txtName, txtType dan txtSign tidak memiliki nilai text atau kosong maka lompat branch ’akhir’, kemudian memeriksa apakah text pada txtName, txtType dan txtSign mengandung tanda ”;”, jika ya maka prosedur menampilkan pesan ”This Sign ’;’ is not allowed” dan langsung mengakhiri prosedur. Sebaliknya jika tidak maka prosedur menambahkan data pada lstName dengan text dari txtName, menambah data pada lstType dengan text dari txtType, menambah data pada lstSign dengan text dari txtSign.
b. Menyimpan data signature Pengguna dapat melakukan penyimpanan data signature dengan menekan tombol save. Adapun baris program untuk tombol ini adalah sebagai berikut. Private Sub Label5_Click() On Error Resume Next Dim Scan As String Dim i As Integer Dim f As Integer Scan = txtSize.Text & ";" & cmbProc.Text & ";" & cmbWild.Text & vbCrLf For i = 0 To lstName.ListCount - 1 Scan = Scan & lstName.List(i) & ";" & lstType.List(i) & ";" & lstSign.List(i) & vbCrLf Next i
71
f = FreeFile Open App.Path & "\scan.dat" For Output As #f Print #f, Scan Close #f MsgBox "Data Signature Telah Tersimpan", vbOKOnly End Sub
Prosedur ini aktif ketika pengguna menekan tombol save, dengan mengumpulkan data-data yang ada dan menyimpannya pada file scan.dat kemudian menampilkan pesan ”Data Signature Telah Tersimpan”.
c. Memperoleh nilai CRC Pengguna dapat memperoleh nilai CRC dari suatu file dengan menekan tombol CRC. Adapun baris program untuk tombol ini adalah sebagai berikut. Private Sub Label6_Click() frmCRC.Show End Sub
Prosedur menampilkan form frmCRC. Adapun baris program yang terdapat pada form frmCRC adalah sebagai berikut. Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub
Prosedur ini aktif ketika pengguna memilih direktori, dengan memberikan nilai dir1.path pada file1.path. Dengan kata lain file1 ini merupakan isi dari dir1. Private Sub Drive1_Change() Dir1 = Drive1 End Sub
Prosedur ini aktif ketika pengguna memilih drive, dengan memberikan nilai drive1 pada dir1. Dengan kata lain dir1 ini merupakan isi dari drive1. Private Sub File1_Click() On Error Resume Next Dim myPath As String If File1.ListCount < 1 Then Exit Sub myPath = Dir1.Path If Right(myPath, 1) <> "\" Then
72
myPath = Dir1.Path & "\" End If txtCRC.Text = frmUtama.CRC2.FromFile(myPath & File1.Filename) End Sub
Prosedur ini aktif ketika pengguna mengklik file1 yang berisi nama-nama file pada direktori yang dipilih. Jika file1 kurang dari 1 atau kosong maka prosedur langsung mengakhirinya. Kemudian memberikan nilai pada variabel myPath dengan dir1.path. Jika myPath tidak mengandung karakter ”\” maka myPath diberi nilai dengan dir1.path ditambah dengan karakter ”\”. Kemudian memberikan nilai pada txtCRC.text dengan nilai CRC dari file yang dipilih pada file1. Private Sub Image1_Click() Me.Hide End Sub
Prosedur ini aktif ketika pengguna mengklik image1 kemudian menyembunyikan form frmCRC. 3. Menu Option Pada menu ini pengguna bisa menampilkan file, proses atau aplikasi yang sedang berjalan, menghentikan file atau proses, melakukan pengecekan dan pengembalian nilai registry, mengakses command prompt, start ulang komputer dan mematikan komputer. a. Menampilkan file, proses atau aplikasi yang sedang berjalan Pengguna dapat menampilkan file, proses atau aplikasi yang sedang berjalan dengan memilih tombol opsi. Adapun masing-masing tombol akan memanggil prosedur di bawah ini. Sub FillListView() frmKetiga.MousePointer = vbHourglass lstProcess.Visible = False lstProcess.ListItems.Clear Dim i As Integer For i = 0 To lstFile.ListCount - 1
73
On Error Resume Next If Option1.Value = True Then If UCase(Right(lstFile.List(i), 3)) = "EXE" UCase(Right(lstFile.List(i), 3)) = "PIF" _ Or UCase(Right(lstFile.List(i), UCase(Right(lstFile.List(i), 3)) = "COM" _ Then Ipt (i) ElseIf Option2.Value = True Then If UCase(Right(lstFile.List(i), 3)) = "DLL" ElseIf Option3.Value = True Then If UCase(Right(lstFile.List(i), 3)) = "OCX" ElseIf Option4.Value = True Then Ipt i End If DoEvents Next i frmKetiga.MousePointer = vbNormal lstProcess.Visible = True End Sub
Or 3)) = "SCR" Or
Then Ipt (i) Then Ipt (i)
Dari kode program di atas maka ketika pengguna menekan salah satu tombol opsi maka sistem menyeleksi 3 huruf paling belakang dari setiap file yang ada pada lstFile jika sesuai dengan tombol opsi yang dipilih maka file terpilih akan dimasukkan ke listview dengan memanggil prosedur Ipt. Adapun kode program dari prosedur ini adalah sebagai berikut. Sub Ipt(i As Integer) Dim uProcess As PROCESSENTRY32 Dim x As Integer If Namafile(lstFile.List(i)) = "" Then Set Utama = lstProcess.ListItems.Add(, , CheckNamaFile(lstFile.List(i))) Else Set Utama = lstProcess.ListItems.Add(, , Namafile(lstFile.List(i))) End If If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", UCase(Left(lstFile.List(i), 1))) <> 0 Then CRC1.Path = lstFile.List(i) Else Dim ps As Integer ps = InStr(Mid(lstFile.List(i), 2, Len(lstFile.List(i)) - 1), "\") CRC1.Path = Mid(lstFile.List(i), ps + 2, Len(lstFile.List(i)) - (ps - 1)) End If Utama.SubItems(1) = CRC1.Path Utama.SubItems(2) = frmUtama.CRC2.FromFile(lstFile.List(i))
74
If frmUtama.CRC2.FromFile(lstFile.List(i)) = frmKedua.lstSign.List(x) Then Utama.ForeColor = vbRed Utama.Checked = True Else Utama.ForeColor = vbBlue End If Utama.SubItems(3) = lstFile.ItemData(i) End Sub
Pada prosedur ini menampilkan file-file yang sesuai dengan format masing-masing tombol opsi ke listview, adapun informasi yang ditampilkan antara lain: yang pertama nama file jika nama file sama dengan kosong maka memanggil fungsi CheckNamaFile kemudian menampilkannya pada listview, yang kedua alamat path dari file tersebut dan nilai crc dari file tersebut. b. Menghentikan file atau proses Pengguna dapat menghentikan file, proses atau aplikasi yang sedang berjalan dengan memilih tombol kill process. Adapun baris program untuk tombol ini adalah sebagai berikut. Private Sub Label8_Click() TerminateProcess lstProcess.ListItems(lstProcess.SelectedItem.index).SubItems(3) , 0 Sleep 500 Call Label9_Click End Sub
Prosedur ini akan aktif ketika pengguna mengklik tombol kill process, kemudian sistem akan memanggil fungsi terminate process yang ada pada modul API. Kemudian mengaktifkan tombol refresh. c. Melakukan pengecekan dan pengembalian nilai registry Pengguna dapat melakukan pengecekan terhadap registry dengan menekan tombol konfigurasi windows. Private Sub Label4_Click() frmKonfigurasiWindows.Show
75
End Sub
Prosedur ini menampilkan form frm KonfigurasiWindows. Pada form tersebut sistem langsung melakukan pengecekan terhadap nilai registry yang dimanipulasi
oleh
backdoor
dan
pada
form
ini
pengguna
dapat
mengembalikan nilai registry yang dimanipulasi tersebut. Adapun kode program dari form tersebut dapat dilihat pada lampiran. d. Mengakses command prompt Pengguna dapat menjalankan program dos melalui aplikasi ini dengan menekan tombol command prompt pada form. Adapun kode program pada tombol ini adalah sebagai berikut: Private Sub Command1_Click() Shell "cmd.exe", vbNormalFocus End Sub
Prosedur ini memanfaatkan perintah dos yaitu shell untuk memanggil aplikasi cmd.exe. e. Start ulang komputer Pengguna dapat melakukan start ulang komputer melalui aplikasi ini dengan menekan tombol restart pada form. Adapun kode program pada tombol ini adalah sebagai berikut: Private Sub Command2_Click() TurnOff Restart, True End Sub
Prosedur ini memanggil fungsi turnoff pada modul fungsi dan memberikannya nilai true.
76
f. Mematikan komputer Pengguna dapat mematikan komputer melalui aplikasi ini dengan menekan tombol shutdown pada form. Adapun kode program pada tombol ini adalah sebagai berikut: Private Sub Command3_Click() TurnOff ShutDown, True End Sub
Prosedur ini memanggil fungsi turnoff pada modul fungsi dan memberikannya nilai true.
4.1.2 Antarmuka Pada sub bab ini penulis akan menampilkan beberapa implementasi antarmuka, diantaranya: 1. Tampilan menu pendeteksian Pada menu ini terdapat textbox berisi alamat direktori yang ingin di-scan, dimana alamat defaultnya adalah c:\windows. Apabila pengguna menekan tombol browse yang berada di bawah textbox tersebut kemudian memilih direktori maka alamat pada kotak teks (textbox) tersebut akan berubah sesuai dengan yang dipilih. Di bawah tombol browse terdapat listbox yang nantinya akan berisi nama worm jika selama proses pencarian (scanning) backdoor tersebut ditemukan. Selama proses pencarian sistem akan menampilkan pencarian file dan kalimat ”Please Wait….”. Pada bagian kiri terdapat tombol scan, stop, reload, dan delete. Lihat Gambar 4.1 sampai dengan 4.3.
77
Gambar 4.1 Tampilan menu pendeteksian
Gambar 4.2 Tampilan aplikasi ketika pengguna menekan tombol browse pada menu pendeteksian.
2. Tampilan menu signature Pada menu signature ini pengguna bisa mengelola data signature seperti menambah data, menyimpan data dan memperoleh nilai crc dari suatu file. Pada bagian kiri terdapat daftar data signature. Di sebelah kanan terdapat menu-menu untuk mengisi data signature. Kemudian di bawahnya terdapat tombol-tombol yang ditujukan untuk mengelola data signature tersebut. Lihat Gambar 4.3 dan 4.4.
78
Gambar 4.3 Tampilan menu signature
Gambar 4.4 Tampilan form CRC 3. Tampilan menu option Pada menu ini terdapat listbox yang berisi proses-proses yang sedang berjalan pada komputer, di sebelah kanannya terdapat logo dari proses atau aplikasi yang terdapat pada daftar, tombol kill process untuk menghentikan proses dan tombol refresh untuk memanggil kembali proses-proses yang sedang berjalan (sama halnya seperti aplikasi windows yaitu task manager). Kemudian di bawah listbox terdapat pilihan untuk menampilkan exe file, dll file, ocx file dan semua file yang ada pada sistem operasi yang digunakan. Kemudian di bawah tombol kill process dan refresh terdapat tombol-tombol seperti konfigurasi windows, command prompt, restart dan shutdown. Lihat Gambar 4.5 sampai 4.7.
79
Gambar 4.5 Tampilan menu option
Gambar 4.6 Tampilan form konfigurasi windows ketika pengguna menekan tombol konfigurasi windows
80
Gambar 4.7 Tampilan form lihat registry ketika pengguna menekan tombol ok pada form konfigurasi windows 4.2 Pengujian (testing) Pengujian program aplikasi antivirus ini dilakukan untuk menguji dan memastikan bahwa program yang telah dirancang dan dibuat ini dapat berfungsi dengan baik dan sesuai dengan rumusan rancangan yang telah ditetapkan sebelumnya. Tanpa adanya pengujian, maka tidak dapat diketahui apakah program yang telah dibuat sesuai dengan spesifikasi rancangan program aplikasi. Kebenaran dari menu pendeteksian pada aplikasi adalah : 1. Kemampuan untuk mengklik tombol scan untuk melakukan pencarian file dan menampilkannya apabila memiliki penanda yang sama dengan data signature. 2. Kemampuan untuk mengklik tombol stop untuk melakukan penghentian pencarian. 3. Kemampuan untuk mengklik tombol delete untuk melakukan penghapusan file.
81
4. Kemampuan untuk mengklik tombol reload untuk membaca data signature. 5. Kemampuan untuk mengklik tombol report untuk menampilkan form laporan mengenai proses pendeteksian. Kebenaran dari menu signature pada aplikasi adalah: 1. Kemampuan untuk mengklik tombol add untuk menambahkan data signature. 2. Kemampuan untuk mengklik tombol save untuk menyimpan data signature. 3. Kemampuan untuk mengklik tombol crc untuk menampilkan form crc. Kebenaran dari menu option pada aplikasi adalah: 1. Kemampuan untuk memilih tombol opsi untuk menampilkan file, proses atau aplikasi yang sedang berjalan. 2. Kemampuan untuk mengklik tombol kill process untuk menghentikan file, proses atau aplikasi yang sedang berjalan. 3. Kemampuan untuk mengklik tombol refresh untuk menampilkan kembali file, proses atau aplikasi yang sedang berjalan. 4. Kemampuan untuk mengklik tombol konfigurasi windows untuk menampilkan form konfigurasi windows. 5. Kemampuan untuk mengklik tombol restart untuk start ulang komputer. 6. Kemampuan untuk mengklik tombol shutdown untuk mematikan komputer. 7. Kemampuan
untuk
mengklik
menampilkan aplikasi cmd.exe.
tombol
command
prompt
untuk
82
4.2.1
Metode Pengujian Pengujian program aplikasi ini dilakukan dengan menggunakan metode
Black Box Testing. Metode Black Box Testing ini merupakan pengujian program berdasarkan fungsi dari program. Tujuan dari metode Black Box Testing ini adalah untuk menemukan kesalahan fungsi pada program. Pengujian dengan metode Black Box Testing dilakukan dengan cara memberikan sejumlah masukkan (input) pada program aplikasi yang kemudian diproses sesuai dengan kebutuhan fungsionalnya untuk melihat apakah program aplikasi menghasilkan keluaran (output) yang diinginkan dan sesuai dengan fungsi dari program aplikasi tersebut. Bila dari input yang diberikan proses menghasilkan output yang sesuai dengan kebutuhan fungsionalnya, maka program aplikasi yang bersangkutan telah benar, tetapi bila output yang dihasilkan tidak sesuai dengan kebutuhan fungsionalnya, maka masih terdapat kesalahan pada program aplikasi tersebut. Pengujian dilakukan dengan mencoba semua kemungkinan yang terjadi dan dilakukan secara berulang-ulang. Jika dalam pengujian ditemukan kesalahan, maka akan dilakukan penelusuran dan perbaikan (debugging) untuk memperbaiki kesalahan yang terjadi. Jika telah selesai melakukan perbaikan maka akan dilakukan pengujian kembali. Pengujian dan perbaikan dilakukan secara terus menerus hingga diperoleh hasil yang terbaik. 4.2.2
Pengujian Pengujian diperlukan untuk mengetahui apakah menu-menu yang ada dapat
berfungsi dengan baik atau tidak. Pengujian dilakukan dengan memilih dari setiap pilihan yang ada pada menu aplikasi antivirus ini dan tentunya backdoor telah
83
menginfeksi komputer,. Pengujian dilakukan satu persatu dalam semua kondisi yang mungkin terjadi. Pengujian tersebut dirangkum dalam Tabel 4.1 di bawah ini. Table 4.1 Tabel skenario pengujian No
Menu yang diuji Menu Pendeteksian
Bagian menu yang diuji Tombol Scan
Input/ kondisi skenario pengujian Mengklik tombol scan pada menu pendeteksian.
2
Menu Pendeteksian
Tombol Stop
Mengklik tombol stop pada menu pendeteksian.
3
Menu Pendeteksian
Tombol Delete
Mengklik tombol delete pada menu pendeteksian.
4
Tombol Reload Tombol Report Tombol Add
9
Menu Pendeteksian Menu Pendeteksian Menu Signature Menu Signature Menu Signature Menu Option
Mengklik tombol reload pada menu pendeteksian Mengklik tombol report pada menu pendeteksian Mengklik tombol add pada menu signature Mengklik tombol save pada menu signature Mengklik tombol CRC pada menu signature Mengklik tombol opsi pada menu option
10
Menu Option
Tombol Kill Process
Mengklik tombol kill process pada menu option
11
Menu Option
Tombol Refresh
Mengklik tombol Refresh pada menu option
12
Menu Option
Mengklik tombol konfigurasi windows
13
Menu Option
14
Menu Option
15
Menu Option
Tombol Konfigurasi Windows Tombol Restart Tombol Shutdown Tombol Command Prompt
1
5 6 7 8
Tombol Save Tombol CRC Tombol Opsi
Mengklik tombol Restart
Output/ hasil yang akan dicapai Menampilkan proses pencarian dan menampilkan file backdoor dengan asumsi file tersebut memiliki nilai penanda yang sama dengan data signature. Menghentikan proses pencarian dan menampilkan pesan pemberitahuan. Menghapus file backdoor dengan asumsi aplikasi menemukan backdoor pada proses pencarian. Membaca data signature dan menampilkan pesan. Menampilkan form laporan (report). Menambah data nama pada daftar. Menyimpan data pada file scan.data Menampilkan form CRC Menampilkan file, proses atau aplikasi yang sedang berjalan. Menghentikan file, proses atau aplikasi yang sedang berjalan. Menampilkan file, proses atau aplikasi yang sedang berjalan. Menampilkan form konfigurasi windows
Mengklik tombol Shutdown
Melakukan start ulang komputer Mematikan komputer
Mengklik tombol command prompt
Menampilkan aplikasi cmd.exe
84
4.2.3
Hasil Pengujian Dari hasil pengujian terakhir yang dilakukan dapat diperoleh hasil
pengujian. Dari hasil skenario pengujian pada setiap pilihan yang ada pada aplikasi ini yaitu menu pendeteksian, menu signature dan menu option pada aplikasi antivirus ini, maka diperoleh hasil pengujian tersebut sesuai dengan rumusan rancangan aplikasi program ini dan terangkum dalam tabel hasil pengujian. Lihat Tabel 4.2. Table 4.2 Tabel hasil pengujian No
Menu yang diuji Menu Pendeteksian
Bagian menu yang diuji Tombol Scan
2
Menu Pendeteksian
Tombol Stop
3
Menu Pendeteksian
Tombol Delete
4
Tombol Reload
6
Menu Pendeteksian Menu Pendeteksian Menu Signature
7
Menu Signature
Tombol Save
8
Menu Signature
Tombol CRC
9
Menu Option
Tombol Opsi
10
Menu Option
Tombol Kill Process
11
Menu Option
Tombol Refresh
12
Menu Option
13
Menu Option
Tombol Konfigurasi Windows Tombol Restart
14 15
Menu Option Menu Option
1
5
Tombol Report Tombol Add
Tombol Shutdown Tombol Command Prompt
Output/ hasil yang dicapai Dapat menampilkan proses pencarian dan menampilkan file backdoor dengan asumsi file tersebut memiliki nilai penanda yang sama dengan data signature. Dapat menghentikan proses pencarian dan menampilkan pesan pemberitahuan. Dapat menghapus file backdoor dengan asumsi aplikasi menemukan backdoor pada proses pencarian. Dapat membaca data signature dan menampilkan pesan. Dapat menampilkan form laporan (report). Dapat menambah data pada daftar. Dapat menyimpan data pada file scan.dat Dapat menampilkan form CRC Dapat menampilkan file, proses atau aplikasi yang sedang berjalan. Dapat menghentikan file, proses atau aplikasi yang sedang berjalan. Dapat menampilkan file, proses atau aplikasi yang sedang berjalan. Dapat menampilkan form konfigurasi windows Dapat melakukan start ulang komputer Dapat mematikan komputer Dapat menampilkan aplikasi cmd.exe
85
Berikut adalah contoh beberapa hasil pengujian dari aplikasi antivirus ini, antara lain: a. Ketika pengguna menekan tombol scan pada aplikasi maka aplikasi melakukan pencarian dengan menampilkan proses pencarian seperti menampilkan tulisan ”Please Wait” dan proses pembacaan file. Aplikasi juga menampilkan file yang memiliki nilai penanda yang sama dengan data signature. Jika pencarian telah selesai maka aplikasi menampilkan pesan. Dapat dilihat pada Gambar 4.8.
Gambar 4.8 Tampilan menu pendeteksian ketika menemukan file backdoor. b. Apabila proses pencarian selesai dan menemukan file atau folder yang dianggap sebagai backdoor maka pengguna dapat menghapus file atau folder tadi dengan memilih file tersebut dan menekan tombol delete maka aplikasi langsung menghapusnya tetapi jika tidak ditemukan kemudian pengguna c. menekan tombol delete maka aplikasi menampilkan pesan ”Tidak Ada File yang dipilih”. Lihat Gambar 4.9.
86
Gambar 4.9 Tampilan menu pendeteksian ketika pengguna menekan tombol delete tetapi tidak ada file yang dipilih. d. Ketika pengguna menekan tombol reload maka aplikasi menampilkan pesan signature telah diperbarui, seperti terlihat pada Gambar 4.10.
Gambar 4.10 Tampilan menu pendeteksian ketika pengguna menekan tombol reload
87
e. Pengguna dapat menambahkan data signature nilai crc. Untuk memudahkan pengguna dalam memperoleh nilai CRC32 dari file atau folder yang pengguna anggap sebagai backdoor dengan menggunakan fasilitas CRC untuk melakukan pembacaan nilai crc. Lihat Gambar 4.11.
Gambar 4.11 Tampilan form CRC yang menampilkan nilai CRC dari file yang dipilih f. Setelah pengguna mendapatkan nilai CRC di atas maka pengguna dapat memasukkan data tersebut ke kotak teks. Kemudian pengguna dapat menambahkan data tersebut dengan menekan tombol add maka aplikasi memasukkan data tersebut ke dalam daftar. Lihat Gambar 4.12 dan 4.13.
Gambar 4.12 Tampilan menu signature ketika pengguna mengisi data signature backdoor.
88
Gambar 4.13 Tampilan menu signature setelah pengguna menekan tombol add. g. Setelah data tersebut dimasukkan ke daftar, maka pengguna dapat mengubah data-data yang terdapat dalam daftar menjadi file dengan nama scan.dat yang berisi data-data yang terdapat dalam daftar. Lihat Gambar 4.16.
Gambar 4.14 Tampilan file scan.dat yang mengalami perubahan setelah pengguna menekan tombol save. h. Aplikasi dapat menampilkan file, proses atau aplikasi apa saja yang sedang berjalan (seperti halnya task manager) dan untuk memudahkan pengguna maka aplikasi memberi warna merah apabila file, proses atau aplikasi yang
89
sedang berjalan tersebut memiliki nilai penanda yang sama dengan data signature. pengguna dapat menghentikan file, proses atau aplikasi tersebut dengan mencentangnya kemudian menekan tombol kill process. i. Apabila nilai registry dimanipulasi oleh backdoor tanpa sepengetahuan pengguna maka aplikasi dapat mengetahui data registry mana yang mengalami perubahan, kemudian pengguna dapat mengembalikannya ke bentuk yang sebenarnya. Pengguna juga dapat melihat daftar key dan nilai dari registry kemudian pengguna dapat melakukan penghapusan nilai tersebut. Lihat Gambar 4.15 dan 4.16.
Gambar 4.15 Tampilan form konfigurasi windows setelah backdoor menginfeksi.
90
Gambar 4.16 Tampilan form lihat registry setelah backdoor memanipulasi registry. 4.2.4
Analisis Hasil Pengujian Setelah melakukan pengujian terhadap semua menu aplikasi ini, maka dapat
disimpulkan bahwa pengujian telah menunjukkan hasil keluaran (output) dan proses yang sesuai dengan rumusan rancangan aplikasi program ini. Dari hasil pengujian tersebut dapat dikatakan bahwa program ini telah berjalan sesuai dengan pengujian tersebut. Pada aplikasi ini juga dapat mengembalikan nilai registry yang dimanipulasi oleh backdoor ke nilai sebenarnya artinya jika backdoor menyembunyikan jendela atau fungsi pada Windows. Namun, berdasarkan hasil pengujian secara keseluruhan didapatkan beberapa keterbatasan dari program aplikasi antivirus ini, antara lain : 1. Aplikasi tidak bisa aktif secara otomatis pada saat komputer dinyalakan. Pengoperasian aplikasi ini bersifat manual, di mana perlu adanya interaksi dari pengguna aplikasi, sehingga memperlambat upaya pencegahan sejak awal.
91
2. Aplikasi ini tidak dapat berjalan apabila file scan.dat disembunyikan. Sedangkan apabila file scan.dat ini dihapus maka jumlah data signature akan kembali pada status awal saat aplikasi ini pertama kalinya dijalankan.
89
BAB V PENUTUP
5.1 Kesimpulan Beberapa kesimpulan yang dapat diambil selama melakukan pengerjaan aplikasi antivirus ini adalah sebagai berikut: Berdasarkan hasil pengujian pada bab 4 dapat diketahui bahwa secara umum aplikasi ini dapat berjalan, antara lain: 1. Aplikasi antivirus yang penulis buat ini dapat melakukan pencarian (scanning) berdasarkan nilai crc dari suatu file dan dapat melakukan penghapusan dengan adanya interaksi dari pengguna. 2. Aplikasi dapat menambahkan dan penyimpanan data penanda (signature). Adapun keluarannya berupa file bernama scan.dat. 3. Aplikasi dapat menampilkan dan menghentikan file proses yang sedang berjalan. 4. Aplikasi dapat melakukan perubahan nilai registry yang dimanipulasi backdoor ke nilai yang sebenarnya.
5.2 Saran Selama pembuatan aplikasi ini, penulis menemui beberapa kekurangan di antaranya:
89
90
1. Aplikasi pada saat dijalankan pada alamat path yang sama tidak terdapat file.scan.dat maka aplikasi membuat file tersebut yang berisi data signature awal. Saat penambahan signature pada aplikasi maka signature ini juga ditambahkan pada file scan.dat, penambahan signature ini sifatnya sementara (temporary) karena apabila file scan.dat dihapus maka jumlah signature akan kembali pada status awal bertama kali dijalankan. 2. Aplikasi ini tidak bisa berfungsi secara otomatis pada saat komputer dinyalakan. Aplikasi ini semata-mata dilakukan secara manual dengan mengklik tombol scan. Beberapa saran penulis dalam pengembangan aplikasi antivirus selanjutnya, adalah sebagai berikut: 1. Berdasarkan kesimpulan di atas maka sangat disarankan dalam pengelolaan data signature dapat menggunakan basis data dalam penyimpanannya sehingga lebih terjaga data signature tersebut. 2. Perlu disarankan agar aplikasi dilakukan pemeriksaan secara otomatis ketika komputer dalam keadaan hidup atau aktif.
Kode Program Form Utama Option Explicit Dim DatFile() As Variant Private Sub Form_Load() Dim f As Integer If Len(Dir(App.Path & "\scan.dat")) < 1 Then f = FreeFile Open App.Path & "\scan.dat" For Output As #f Print #f, "50000;MANUAL;*.*" Print #f, "Code Red Virus (Internet Backdoor);CRC;DD7A0BA8" Print #f, "Code Red 2 Virus (Internet Backdoor);CRC;1AA1E86F" Print #f, "Anthrax Virus (Internet Backdoor);CRC;9A6231DC" Print #f, "Bin Laden Virus (Internet Backdoor);CRC;A5FB507D" Print #f, "Brit.e (Internet Backdoor);CRC;3A76C92" Print #f, "Clown.a (Internet Backdoor);CRC;2523B959" Print #f, "Gaggl (Internet Backdoor);CRC;CC4F1D8D" Print #f, "Gaggl.a (Internet Backdoor);CRC;8000D3AD" Print #f, "Klez.e (Internet Backdoor);CRC;C8B4593" Print #f, "Klez.h (Internet Backdoor);CRC;6CF483F9" Print #f, "Magistrar.b (Internet Backdoor);CRC;B6CB4EAF" Print #f, "Sircam (Internet Backdoor);CRC;F11602A1" Print #f, "Test Virus(Nothingh);CRC;6851CF3C" Print #f, "Tuing (Internet Backdoor);CRC;EA34BA01" Print #f, "Test lah(macro);CRC;41B2C3F4" Print #f, "Diningrat (backdoor);CRC;D0602DD6" Print #f, "Diningrat II(backdoory);CRC;3BEA1FB0" Print #f, "w32.Grogotix;CRC;CABC48DE" Print #f, "w32.riyani_jangkaru.jpg.exe (Backdoor);CRC;A9EB7466" Print #f, "w32.Flu_Ikan;CRC;CD0D41D5" Print #f, "w32.rontokbro@mm (internet backdoor);CRC;28B3A591" Print #f, "w32.blackmal.c@ mm(backdoor);CRC;A9AFE8ED" Print #f, "w32.lovgate.r@mm (backdoor);CRC;9E175A45" Print #f, "w32.blackmall.variant.a (backdoor variant a);CRC;25407EB9" Print #f, "Trojan Horse (Trojan Horse);CRC;52634464" Close #f End If LoadSignature False txtPath.Text = Left(SF, GetWindowsDirectory(SF, 255)) frmTampilan.lblStatus.Caption = "#Backdoor Removal# Waiting for instruction..." 'mengembalikan file msvbv60.dll jika terjadi penghapusan/perubahan pada file tersebut CopyFile App.Path & "\" & "msvbvm60.dll", GetSystemPath & "msvbvm60.dll", 0 CopyFile App.Path & "\" & "msvbvm60.dll", GetWindowsPath & "msvbvm60.dll", 0 SetFileAttributes GetSystemPath & "msvbvm60.dll", FILE_ATTRIBUTE_HIDDEN Or FILE_ATTRIBUTE_READONLY SetFileAttributes GetWindowsPath & "msvbvm60.dll", FILE_ATTRIBUTE_HIDDEN Or FILE_ATTRIBUTE_READONLY Randomize Me.Caption = Rnd * Me.hWnd App.TaskVisible = False App.Title = "" SetFileAttributes App.Path & "\" & App.EXEName & ".exe", FILE_ATTRIBUTE_NORMAL End Sub
Private Sub Form_Unload(Cancel As Integer) StopIt = False End End Sub Private Sub Label10_Click() frmLog.Show 'menampilkan form laporan End Sub Private Sub Label12_Click() StopIt = True End End Sub Private Sub Label2_Click() frmKedua.Show 'menampilkan menu signature Me.Hide End Sub Private Sub Label3_Click() frmKetiga.Show 'menampilkan menu option Me.Hide End Sub Private Sub Label5_Click() Dim brwVal As String brwVal = BrowseForFolder("Silahkan pilih Drive dan Direktorinya:") If Len(brwVal) > 0 Then txtPath.Text = brwVal 'memberi nilai pada txtPath dengan drive dan direktori yang dipilih End If End Sub Private Sub Label6_Click() On Error Resume Next Dim xmount As String Dim i As Integer Label6.Enabled = False List1.Enabled = False If Mid(txtPath.Text, 2, 2) <> ":\" Then MsgBox "Alamat Path Belum Terisi", vbCritical GoTo ProcError End If If chkOld.Value = Checked Then lstFound.Clear List1.Clear End If StopIt = False frmTampilan.Show lblWait.Visible = True frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Scanning Started At: " & Date & " - " & Time & " ]" & vbCrLf frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Full Path: " & txtPath.Text & " ]" & vbCrLf FindFiles txtPath.Text, (DatFile(0)(2)), wName, wType, wSign, (DatFile(0)(0)), (DatFile(0)(1)), CRC2, lstFound, List1, frmTampilan.lblStatus, frmLog.txtLog If lstFound.ListCount > 1 Then xmount = " files." Else xmount = " file." End If If StopIt = False Then frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Scanning Finished At: " & Date & " - " & Time & " ]" & vbCrLf & vbCrLf
Else frmLog.txtLog.Text = frmLog.txtLog.Text & "[ Scanning Stopped By User At: " & Date & " - " & Time & " ]" & vbCrLf & vbCrLf End If MsgBox "Pencarian Selesai, menemukan " & lstFound.ListCount & xmount, vbInformation UpdateStatus List1.Enabled = True ProcError: Label6.Enabled = True lblWait.Visible = False frmTampilan.Hide End Sub Private Function LoadSignature(Message As Boolean) wName.Clear wType.Clear wSign.Clear Dim i As Long DatFile() = Parse(App.Path & "\scan.dat", ";") For i = 1 To UBound(DatFile) wName.AddItem (DatFile(i)(0)) 'menambahkan data wName dengan isi dari datfile(i)(0) wType.AddItem (DatFile(i)(1)) 'menambahkan data wType dengan isi dari datfile(i)(1) wSign.AddItem (DatFile(i)(2)) 'menambahkan data wSign dengan isi dari datfile(i)(2) Next i If Message = True Then MsgBox "Signature telah diperbarui", vbInformation End Function Private Sub UpdateStatus() 'mengubah nilai caption dari label status frmTampilan.lblStatus.Caption = "Total backdoor yang ditemukan: " & lstFound.ListCount End Sub Private Sub Label7_Click() StopIt = True 'memberi nilai true pada variable stopit frmTampilan.Hide 'menyembunyikan form frmTampilan End Sub Private Sub Label8_Click() On Error Resume Next Dim i As Integer If List1.SelCount = 0 Then 'Jika tidak ada data yang terpilih MsgBox "Tidak Ada File yang dipilih", vbCritical 'Menampilkan pesan Else Do Until List1.SelCount = 0 For i = 0 To List1.ListCount If List1.Selected(i) = True Then If DatFile(0)(1) = "MANUAL" Then WinExit _ GetFileName(lstFound.List(i), True) SetAttr lstFound.List(i), vbNormal 'mengatur atribut menjadi normal SleepEx 1, False 'menghapus data dari daftar Kill lstFound.List(i) lstFound.RemoveItem (i) List1.RemoveItem (i) End If Next Loop End If UpdateStatus 'memanggil prosedur update status End Sub
Private Sub Label9_Click() LoadSignature True End Sub Private Sub List1_Click() frmTampilan.lblStatus.Caption = lstFound.List(List1.ListIndex) End Sub Private Sub List1_DblClick() On Error Resume Next Label8_Click End Sub
Kode Program Form Kedua Option Explicit Dim NoUrut As Long Private Sub Form_Load() On Error Resume Next Dim DatFile() As Variant Dim i As Long Dim f As Integer Randomize Me.Caption = Rnd * Me.hWnd App.TaskVisible = False App.Title = "" NoUrut = -1 start: DatFile() = Parse(App.Path & "\scan.dat", ";") If Len(DatFile(1)(0)) = 0 Then f = FreeFile Open App.Path & "\scan.dat" For Output As #f Print #f, "50000;MANUAL;*.*" Print #f, "Code Red Virus (Internet Backdoor);CRC;DD7A0BA8" Print #f, "Code Red 2 Virus (Internet Backdoor);CRC;1AA1E86F" Print #f, "Anthrax Virus (Internet Backdoor);CRC;9A6231DC" Print #f, "Bin Laden Virus (Internet Backdoor);CRC;A5FB507D" Print #f, "Brit.e (Internet Backdoor);CRC;3A76C92" Print #f, "Clown.a (Internet Backdoor);CRC;2523B959" Print #f, "Gaggl (Internet Backdoor);CRC;CC4F1D8D" Print #f, "Gaggl.a (Internet Backdoor);CRC;8000D3AD" Print #f, "Klez.e (Internet Backdoor);CRC;C8B4593" Print #f, "Klez.h (Internet Backdoor);CRC;6CF483F9" Print #f, "Magistrar.b (Internet Backdoor);CRC;B6CB4EAF" Print #f, "Sircam (Internet Backdoor);CRC;F11602A1" Print #f, "Test Virus(Nothingh);CRC;6851CF3C" Print #f, "Tuing (Internet Backdoor);CRC;EA34BA01" Print #f, "Test lah(macro);CRC;41B2C3F4" Print #f, "Diningrat (backdoor);CRC;D0602DD6" Print #f, "Diningrat II(backdoory);CRC;3BEA1FB0" Print #f, "w32.Grogotix;CRC;CABC48DE" Print #f, "w32.riyani_jangkaru.jpg.exe (Backdoor);CRC;A9EB7466" Print #f, "w32.Flu_Ikan;CRC;CD0D41D5" Print #f, "w32.rontokbro@mm (internet backdoor);CRC;28B3A591" Print #f, "w32.blackmal.c@ mm(backdoor);CRC;A9AFE8ED" Print #f, "w32.lovgate.r@mm (backdoor);CRC;9E175A45" Print #f, "w32.blackmall.variant.a (backdoor variant a);CRC;25407EB9" Print #f, "Trojan Horse (Trojan Horse);CRC;52634464"
Close #f GoTo start End If txtSize.Text = DatFile(0)(0) cmbProc.Text = DatFile(0)(1) cmbWild.Text = DatFile(0)(2) For i = 1 To UBound(DatFile) lstName.AddItem (DatFile(i)(0)) lstType.AddItem (DatFile(i)(1)) lstSign.AddItem (DatFile(i)(2)) Next i End Sub Private Sub Label1_Click() frmUtama.Show 'menampilkan menu pendeteksian Me.Hide End Sub Private Sub Label12_Click() End End Sub Private Sub Label3_Click() frmKetiga.Show 'menampilkan menu option Me.Hide End Sub Private Sub Label4_Click() On Error Resume Next 'Memeriksa apakah salah satu dari txtName, txtType dan txtSign bernilai 0 If Len(txtName) = 0 Or Len(txtType) = 0 Or Len(txtSign) = 0 Then Exit Sub 'Memeriksa apakah mengandung karakter ; If InStrRev(txtName, ";") > 0 Or InStrRev(txtType, ";") > 0 Or InStrRev(txtSign, ";") > 0 Then MsgBox "This sign ';' is not allowed", vbCritical Else lstName.AddItem (txtName) 'menambahkan data pada lstName dengan text dari txtName lstType.AddItem (txtType) 'menambahkan data pada lstType dengan text dari txtType lstSign.AddItem (txtSign) 'menambahkan data pada lstSign dengan text dari txtSign End If End Sub Private Sub Label5_Click() On Error Resume Next Dim Scan As String Dim i As Integer Dim f As Integer Scan = txtSize.Text & ";" & cmbProc.Text & ";" & cmbWild.Text & vbCrLf For i = 0 To lstName.ListCount - 1 Scan = Scan & lstName.List(i) & ";" & lstType.List(i) & ";" & lstSign.List(i) & vbCrLf Next i f = FreeFile Open App.Path & "\scan.dat" For Output As #f Print #f, Scan Close #f MsgBox "Data Signature Telah Tersimpan", vbOKOnly frmUtama.Show Me.Hide End Sub Private Sub Label6_Click()
frmCRC.Show 'menampilkan form crc End Sub Private Sub lstName_Click() lstType.TopIndex = lstName.TopIndex lstType.ListIndex = lstName.ListIndex lstSign.TopIndex = lstName.TopIndex lstSign.ListIndex = lstName.ListIndex End Sub Private Sub lstName_MouseDown(Button As Integer, Shift As _ Integer, x As Single, Y As Single) Call lstName_Click End Sub Private Sub lstName_MouseMove(Button As Integer, Shift As _ Integer, x As Single, Y As Single) Call lstName_Click End Sub Private Sub lstName_Scroll() lstType.TopIndex = lstName.TopIndex lstSign.TopIndex = lstName.TopIndex End Sub
Kode Program Form Ketiga Option Explicit Dim Utama As ListItem Dim TmpProses As Long Dim caption1 As Integer Private Sub Form_Load() On Error Resume Next caption1 = 0 Randomize Me.Caption = Rnd * Me.hWnd App.TaskVisible = False App.Title = "" Timer1.Enabled = True 'inisialisasi list lstFile.Clear 'isi list dengan proses file FillProcessListNT lstFile, 1 'isi listview FillListView DoEvents End Sub Private Sub Label1_Click() frmUtama.Show 'menampilkan menu pendeteksian Me.Hide End Sub Private Sub Label12_Click() End End Sub Private Sub Label2_Click()
frmKedua.Show 'menampilkan menu signature Me.Hide End Sub Private Sub Label4_Click() frmKonfigurasiWindows.Show 'menampilkan form konfigurasi windows End Sub Sub FillListView() 'mengganti pointer dalam keadaan proses frmKetiga.MousePointer = vbHourglass 'inisialisasi list lstProcess.Visible = False lstProcess.ListItems.Clear Dim i As Integer For i = 0 To lstFile.ListCount - 1 On Error Resume Next 'lakukan pengisian list berdasarkan If Option1.Value = True Then If UCase(Right(lstFile.List(i), UCase(Right(lstFile.List(i), 3)) = "PIF" _ Or UCase(Right(lstFile.List(i), UCase(Right(lstFile.List(i), 3)) = "COM" _ Then Ipt (i) ElseIf Option2.Value = True Then If UCase(Right(lstFile.List(i), ElseIf Option3.Value = True Then If UCase(Right(lstFile.List(i), ElseIf Option4.Value = True Then Ipt i End If DoEvents Next i 'normalkan pointer frmKetiga.MousePointer = vbNormal lstProcess.Visible = True End Sub
ekstensi 3)) = "EXE" Or 3)) = "SCR" Or
3)) = "DLL" Then Ipt (i) 3)) = "OCX" Then Ipt (i)
'Procedure untuk mengisi listview Sub Ipt(i As Integer) Dim uProcess As PROCESSENTRY32 Dim x As Integer 'pengecekan nama proses If Namafile(lstFile.List(i)) = "" Then 'jika kosong gunakan fungsi CheckNamaFile Set Utama = lstProcess.ListItems.Add(, , CheckNamaFile(lstFile.List(i))) Else 'jika tidak kosong gunakan Fungsi Title Set Utama = lstProcess.ListItems.Add(, , Namafile(lstFile.List(i))) End If 'periksa apakah path yang dituju benar atau tidak If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", UCase(Left(lstFile.List(i), 1))) <> 0 Then CRC1.Path = lstFile.List(i) Else Dim ps As Integer ps = InStr(Mid(lstFile.List(i), 2, Len(lstFile.List(i)) - 1), "\") CRC1.Path = Mid(lstFile.List(i), ps + 2, Len(lstFile.List(i)) (ps - 1))
End If 'daftarkan path dan DNA file pada list Utama.SubItems(1) = CRC1.Path Utama.SubItems(2) = frmUtama.CRC2.FromFile(lstFile.List(i)) For x = 0 To frmKedua.lstSign.ListCount – 1 'periksa apakah nilai checksumnya sama dengan data signature If frmUtama.CRC2.FromFile(lstFile.List(i)) = frmKedua.lstSign.List(x) Then 'maka beri warna merah Utama.ForeColor = &HFF& 'beri tanda check untuk backdoor tersebut Utama.Checked = True End If Next x Utama.SubItems(3) = lstFile.ItemData(i) End Sub Private Function CheckNamaFile(sPath As String) As String Dim j As Integer, byk As Integer Dim tmp As String 'check nama file For j = Len(sPath) To 1 Step -1 tmp = tmp & Mid(sPath, j, 1) If InStr(tmp, "\") <> 0 Then Exit For byk = byk + 1 Next j CheckNamaFile = Right(sPath, byk) End Function Private Sub Label5_Click() Shell "cmd.exe", vbNormalFocus 'menampilkan aplikasi command prompt End Sub Private Sub Label6_Click() TurnOff Restart, True End Sub Private Sub Label7_Click() TurnOff ShutDown, True End Sub Private Sub Label8_Click() TerminateProcess lstProcess.ListItems(lstProcess.SelectedItem.index).SubItems(3), 0 'inisialisasi list Sleep 500 Call Label9_Click End Sub Private Sub Label9_Click() 'inisialisasi list lstFile.Clear 'isi list dengan proses file FillProcessListNT lstFile, 1 'isi listview FillListView End Sub Private Sub lstProcess_Click()
On Error Resume Next Dim x, Y As Long Dim i As Integer x = ExtractIcon(Me.hWnd, lstProcess.SelectedItem.SubItems(1), 0) Picture1.Cls If x Then Y = DrawIcon(Picture1.hdc, 5, 5, x) Else Picture2.Picture = LoadResPicture(101, vbResIcon) Picture1.PaintPicture Picture2.Picture, (Picture1.Width Picture2.Width) / 2, (Picture1.Height - Picture2.Height) / 2, Picture2.Width - ((Picture1.Width - Picture2.Width) / 2), Picture2.Height - ((Picture1.Height - Picture2.Height) / 2) End If lblFileName.Caption = "Nama File: " & AmbilNamaFile(lstProcess.SelectedItem.SubItems(1)) lblUkuranFile.Caption = "Ukuran File:" & AmbilUkuranFile(lstProcess.SelectedItem.SubItems(1)) & " KB" DoEvents 'apabila hProcess =0 maka status dilindungi If lstProcess.SelectedItem.ListSubItems(3) = "0" Then lblStatus.Caption = "Status: Dilindungi" Label8.Enabled = False ElseIf lstProcess.SelectedItem.ListSubItems(3) <> "0" Then For i = 0 To frmKedua.lstSign.ListCount - 1 If lstProcess.SelectedItem.ListSubItems(2) = frmKedua.lstSign.List(i) Then lblStatus.ToolTipText = "Terdeteksi Sebagai Backdoor:" & frmKedua.lstName.List(i) Label8.Enabled = True ElseIf lstProcess.SelectedItem.ListSubItems(2) <> frmKedua.lstSign.List(i) Then lblStatus.Caption = "Status: Aplikasi" Label8.Enabled = True End If Next i End If End Sub Private Sub Option1_Click() 'isi list sesuai dengan option yang diminta FillListView End Sub Private Sub Option2_Click() 'isi list sesuai dengan option yang diminta FillListView End Sub Private Sub Option3_Click() 'isi list sesuai dengan option yang diminta FillListView End Sub Private Sub Option4_Click() 'isi list sesuai dengan option yang diminta FillListView End Sub Private Sub Timer1_Timer() FillProcessListNT lstFile, 1 If FillProcessListNT(lstFile, 1) <> TmpProses Then
Call Label9_Click TmpProses = FillProcessListNT(lstFile, 1) End If End Sub
Kode Program Form CRC Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() Dir1 = Drive1 End Sub Private Sub File1_Click() On Error Resume Next Dim myPath As String If File1.ListCount < 1 Then Exit Sub myPath = Dir1.Path If Right(myPath, 1) <> "\" Then myPath = Dir1.Path & "\" End If txtCRC.Text = frmUtama.CRC2.FromFile(myPath & File1.Filename) 'menampilkan nilai crc dari file yang dipilih pada textbox End Sub Private Sub Image1_Click() Me.Hide 'menyembunyikan form End Sub
Kode Program Form Log Option Explicit Private Sub cmdClear_Click() txtLog.Text = "" 'mengosongkan textbox End Sub Private Sub cmdSave_Click() On Error GoTo akhir Dim Filename As String Dim f As Integer If Len(txtLog.Text) < 1 Then GoTo akhir CD1.Filter = "Text Documents (*.txt)|*.txt" CD1.ShowSave Filename = CD1.Filename If Len(Dir(Filename)) > 0 Then If MsgBox("File Sudah Ada, Mau rubah?", vbYesNo + vbQuestion) _ = vbNo Then GoTo akhir End If f = FreeFile Open Filename For Output As #f Print #f, txtLog.Text Close #f akhir: End Sub Private Sub Image1_Click() frmLog.Hide End Sub
Kode Program Form Tampilan Sub Animate() If shpfile = "[-]" Then shpfile = "[\]" ElseIf shpfile = "[\]" Then shpfile = "[|]" ElseIf shpfile = "[|]" Then shpfile = "[/]" ElseIf shpfile = "[/]" Then shpfile = "[-]" End If End Sub Private Sub lblStatus_Change() Animate End Sub
Kode Program Form Konfigurasi Windows Dim bool As Boolean 'prosedur untuk melakukan pengecekan Sub Registry() Dim singkat As String Dim cek1 As String Dim cek2 As String Dim cek3 As String Dim cek4 As String Dim cek5 As String Dim cek6 As String Dim cek7 As String Dim cek8 As String Dim cek9 As String singkat = "Software\Microsoft\Windows\CurrentVersion\" cek1 = GetDword(HKEY_CURRENT_USER, singkat & "Policies\System", "DisableRegistryTools") If cek1 = "0" Or cek1 = "" Then Check1(0).Value = 0 Else Check1(0).Value = 1 End If cek2 = GetDword(HKEY_CURRENT_USER, singkat & "Policies\Explorer", "NoFind") If cek2 = "0" Or cek2 = "" Then Check1(1).Value = 0 Else Check1(1).Value = 1 End If cek3 = GetDword(HKEY_CURRENT_USER, singkat & "Policies\WinOldApp", "Disabled") If cek3 = "0" Or cek3 = "" Then Check1(2).Value = 0 Else Check1(2).Value = 1 End If cek4 = GetDword(HKEY_CURRENT_USER, singkat & "Policies\Explorer", "NoRun")
If cek4 = "0" Or cek4 = "" Then Check1(3).Value = 0 Else Check1(3).Value = 1 End If cek5 = GetDword(HKEY_CURRENT_USER, "Software\Policies\Microsoft\Internet Explorer\Restrictions", "NoBrowserOptions") If cek5 = "0" Or cek5 = "" Then Check1(4).Value = 0 Else Check1(4).Value = 1 End If cek6 = GetDword(HKEY_CURRENT_USER, singkat & "Policies\Explorer", "NoFolderOptions") If cek6 = "0" Or cek6 = "" Then Check1(5).Value = 0 Else Check1(5).Value = 1 End If cek7 = GetString(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main", "Window Title") If cek7 = "" Then Text1.Text = "" Else Text1.Text = cek7 End If If Not bool Then cek8 = GetString(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Winlogon", "LegalNoticeCaption") If cek8 = "" Then Text2.Text = "" Else Text2.Text = cek8 End If cek9 = GetString(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Winlogon", "LegalNoticeText") If cek9 = "" Then Text3.Text = "" Else Text3.Text = cek9 End If Else cek8 = GetString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "LegalNoticeCaption") If cek8 = "" Then Text2.Text = "" Else Text2.Text = cek8 End If cek9 = GetString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "LegalNoticeText") If cek9 = "" Then Text3.Text = "" Else Text3.Text = cek9 End If End If
End Sub 'prosedur ketika kotak periksa di klik Private Sub Check1_Click(index As Integer) Dim oke As String Select Case index Case 0 If Check1(0).Value = 1 Then oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools", 1) Else oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools", 0) End If Case 1 If Check1(1).Value = 1 Then oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFind", 1) Else oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFind", 0) End If Case 2 If Check1(2).Value = 1 Then oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp", "Disabled", 1) Else oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp", "Disabled", 0) End If Case 3 If Check1(3).Value = 1 Then oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun", 1) Else oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun", 0) End If Case 4 If Check1(4).Value = 1 Then oke = SaveDword("Software\Policies\Microsoft\Internet Explorer\Restrictions", "NoBrowserOptions", 1) Else oke = SaveDword("Software\Policies\Microsoft\Internet Explorer\Restrictions", "NoBrowserOptions", 0) End If Case 5 If Check1(5).Value = 1 Then oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFolderOptions", 1) Else oke = SaveDword("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFolderOptions", 0) End If
End Select Registry End Sub Private Sub Command1_Click() Dim masuk As String If Text1.Text = "" Then Exit Sub masuk = SaveString(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main", "Window Title", Text1.Text) End Sub Private Sub Command2_Click() Dim data As Long Select Case Combo1.Text Case "HKEY_CLASSES_ROOT" data = HKEY_CLASSES_ROOT Case "HKEY_CURRENT_USER" data = HKEY_CURRENT_USER Case "HKEY_LOCAL_MACHINE" data = HKEY_LOCAL_MACHINE Case "HKEY_USERS" data = HKEY_USERS Case "HKEY_CURRENT_CONFIG" data = HKEY_CURRENT_CONFIG Case "HKEY_DYN_DATA" data = HKEY_DYN_DATA End Select With frmLihatRegistry .ListView1.ListItems.Clear .Text1.Text = Combo2.Text .Text2.Text = Combo1.Text .Show .Cari data, Combo2.Text End With End Sub Private Dim Dim Dim
Sub Command3_Click() tanya As String masuk1 As String masuk2 As String
If Text2.Text = "" Or Text3.Text = "" Then tanya = MsgBox("Kedua kotak seharusnya diisi, mau dikosongkan", vbOKCancel) If tanya = vbOK Then If bool Then masuk1 = SaveString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "LegalNoticeCaption", "") masuk2 = SaveString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "LegalNoticeText", "") Else masuk1 = SaveString(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Winlogon", "LegalNoticeCaption", "") masuk2 = SaveString(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Winlogon", "LegalNoticeText", "") End If Text2.Text = "" Text3.Text = "" End If Exit Sub
End If If bool Then masuk1 = SaveString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "LegalNoticeCaption", Text2.Text) masuk2 = SaveString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "LegalNoticeText", Text3.Text) Else masuk1 = SaveString(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Winlogon", "LegalNoticeCaption", Text2.Text) masuk2 = SaveString(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Winlogon", "LegalNoticeText", Text3.Text) End If End Sub Private Sub Command4_Click() On Error Resume Next Dim lokal As String Dim panggil As String If bool Then lokal = Replace(GetString(HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\Applications\notepad.exe\shell\edit\command", ""), "notepad.exe %1", "Regedit.exe") Else lokal = GetString(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Setup\WinbootDir", "devDir") & "\" & "Regedit.exe" End If panggil = Shell(lokal, vbMaximizedFocus) End Sub Private Sub Command5_Click() Me.Hide End Sub Private Sub Command6_Click() CleanReg MsgBox "Registry Telah Dikembli kesettingan semula", vbInformation, "Fix Registry" End Sub Private Sub Command7_Click() Registry End Sub Private Sub Form_Load() GetWindowsVersion bool If Not bool Then Combo1.AddItem "HKEY_DYN_DATA" Registry End Sub
Kode Program Form Lihat Registry Function Cari(Hle As Long, Key As String) Dim hkey As Long, Cnt As Long, sName As String, sData As String, Ret As Long, RetData As Long Dim lvitm As ListItem Dim sTemp As String Dim mResult As Long
Dim i As Integer Dim data As String Ret = BUFFER_SIZE If RegOpenKey(Hle, Key, hkey) = 0 Then sName = Space$(BUFFER_SIZE) While RegEnumKeyEx(hkey, Cnt, sName, Ret, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) <> ERROR_NO_MORE_ITEMS DoEvents Set lvitm = ListView1.ListItems.Add(, , "Key") lvitm.SubItems(1) = Text2.Text lvitm.SubItems(2) = Key & "\" & Left$(sName, Ret) lvitm.SubItems(3) = "(Default)" data = GetString(Hle, Key & "\" & Left$(sName, Ret), "") If data <> "" Then lvitm.SubItems(4) = data Else lvitm.SubItems(4) = "(value not set)" End If Set lvitm = Nothing Cnt = Cnt + 1 sName = Space$(BUFFER_SIZE) Ret = BUFFER_SIZE Wend RegCloseKey hkey Else MsgBox "Gagal membuka key" Me.Hide Exit Function End If Cnt = 0 If RegOpenKey(Hle, Key, hkey) = 0 Then sName = Space(BUFFER_SIZE) sData = Space(BUFFER_SIZE) Ret = BUFFER_SIZE RetData = BUFFER_SIZE While RegEnumValue(hkey, Cnt, sName, Ret, 0, ByVal 0&, ByVal sData, RetData) <> ERROR_NO_MORE_ITEMS If RetData > 0 Then Set lvitm = ListView1.ListItems.Add(, , "Nilai") lvitm.SubItems(1) = Text2.Text lvitm.SubItems(2) = Text1.Text data = TrimNull(sName) If data <> "" Then lvitm.SubItems(3) = data Else lvitm.SubItems(3) = "(Default)" End If lvitm.SubItems(4) = TrimNull(sData) Set lvitm = Nothing End If Cnt = Cnt + 1 sName = Space(BUFFER_SIZE) sData = Space(BUFFER_SIZE) Ret = BUFFER_SIZE RetData = BUFFER_SIZE Wend RegCloseKey hkey Else MsgBox "Gagal membuka nilai" End If End Function
Private Sub Command1_Click() Dim i As Integer For i = 1 To ListView1.ListItems.Count If ListView1.ListItems(i).Checked = False Then ListView1.ListItems(i).Checked = True End If Next i End Sub Private Sub Command2_Click() Dim i As Integer For i = 1 To ListView1.ListItems.Count If ListView1.ListItems(i).Checked = True Then ListView1.ListItems(i).Checked = False End If Next i End Sub Private Sub Command3_Click() Dim i As Integer Dim lvitm As ListItem Dim reg As Long Dim hkey As Long If Cek = True Then For i = 1 To ListView1.ListItems.Count Set lvitm = ListView1.ListItems.Item(i) If ListView1.ListItems(i).Checked = True Then reg = RegOpenKey(Rubahstr(Text2.Text), Text1.Text, hkey) If lvitm = "Nilai" Then reg = RegDeleteValue(hkey, lvitm.SubItems(3)) If reg <> 0 Then MsgBox ("Gagal untuk menghapus nilai " & lvitm.SubItems(2)) Else ListView1.ListItems.Remove (i) End If Else reg = RegDeleteKey(hkey, "") If reg <> 0 Then MsgBox ("Gagal untuk menghapus key " & lvitm.SubItems(2) & vbLf & "Mungkin ada key di bawahnya lagi") Else ListView1.ListItems.Remove (i) End If End If reg = RegCloseKey(hkey) End If Set lvitm = Nothing error: Next End If End Sub Private Sub Command5_Click() Me.Hide End Sub Private Sub mDelete_Click() Command3_Click End Sub Private Sub mExit_Click() Dim tanya As String
frmLihatRegistry.Hide tanya = MsgBox("Mau keluar dari aplikasi ini ?", vbOKCancel) If tanya = vbOK Then End End Sub Private Sub mMark_Click() Command1_Click End Sub Private Sub mUnmark_Click() Command2_Click End Sub Private Function Cek() As Boolean Dim i As Integer For i = 1 To ListView1.ListItems.Count If ListView1.ListItems(i).Checked = True Then Cek = True Next i End Function Private Function TrimNull(startstr As String) As String Dim pos As Integer pos = InStr(startstr, Chr(0)) If pos Then TrimNull = Left(startstr, pos - 1) Exit Function End If TrimNull = startstr End Function
Module API Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hkey As Long, ByVal lpValueName As String) As Long Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hkey As Long, ByVal lpSubKey As String) As Long Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public 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 ' Note that if you declare the lpData parameter as String, you must pass it By Value. Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value. Public Declare Function SHFileOperation Lib "shell32.dll" Alias " SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Public Declare Function GetCurrentProcess Lib "kernel32" () As Long Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessId As Long, ByVal dwType As Long) As Long Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal Handle As Long) As Long Public Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long Public Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hprocess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long Public Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hprocess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long Public Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, lpme As MODULEENTRY32) As Long Public Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, lpme As MODULEENTRY32) As Long Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Public Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Public Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Public Declare Function TerminateProcess Lib "kernel32" (ByVal hprocess As Long, ByVal uExitCode As Long) As Long Public Declare Function GetSystemDirectory Lib "kernel32.dll" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Public Declare Function GetWindowsDirectory Lib "kernel32.dll" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long Public Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long Public Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long Public Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As Any, ReturnLength As Long) As Long Public Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Public Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value. Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long Public Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long Public Declare Function GetForegroundWindow Lib "user32" () As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 'Registry API Public Declare Function RegQueryValueExA Lib "advapi32.dll" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByRef lpData As Long, lpcbData As Long) As Long Public Declare Function RegSetValueExA Lib "advapi32.dll" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByRef lpData As Long, ByVal cbData As Long) As Long Public Declare Function RegSetValueExB Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByRef lpData As Byte, ByVal cbData As Long) As Long Public Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String) As Long Public 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 'File Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Public Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long Public Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long 'Path Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Public Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long Public SF As String * 255 Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hkey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long Public 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 Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long) Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long 'mdlIcon Public Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal Y As Long, ByVal hIcon As Long) As Long Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long Public Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long Public Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long Public Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, ByVal fPictureOwnHandle As Long, IPic As IPictureDisp) As Long
Public Const WM_GETTEXT = &HD Public Const HWND_TOPMOST = -1 Public Const SWP_NOMOVE = &H2 Public Const SWP_NOSIZE = &H1 Public Const BIF_RETURNONLYFSDIRS = 1 Public Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE Public Const FILE_ATTRIBUTE_NORMAL = &H80 Public Const FILE_ATTRIBUTE_HIDDEN = &H2 Public Const FILE_ATTRIBUTE_ARCHIVE = &H20 Public Const FILE_ATTRIBUTE_COMPRESSED = &H800 Public Const FILE_ATTRIBUTE_READONLY = &H1 Public Const FILE_ATTRIBUTE_SYSTEM = &H4 Public Const FO_DELETE = &H3 Public Const REG_DWORD = 4 Public Const ERROR_NO_MORE_ITEMS = 259& Public Const BUFFER_SIZE = 255 Public Const REG_NONE = 0 Public Const REG_BINARY = 3 Public Const REG_DWORD_LITTLE_ENDIAN = 4 Public Const REG_DWORD_BIG_ENDIAN = 5 Public Const REG_LINK = 6 Public Const REG_RESOURCE_LIST = 8 Public Const REG_FULL_RESOURCE_DESCRIPTOR = 9 Public Const REG_RESOURCE_REQUIREMENTS_LIST = 10 Public Const PROCESS_QUERY_INFORMATION = 1024 Public Const PROCESS_VM_READ = 16 Public Const MAX_PATH = 260 Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 Public Const SYNCHRONIZE = &H100000 Public Const PROCESS_ALL_ACCESS = &H1F0FFF Public Const MAX_MODULE_NAME32 As Integer = 255 Public Const MAX_MODULE_NAME32plus As Integer = MAX_MODULE_NAME32 + 1
Public Const TH32CS_SNAPHEAPLIST = &H1 Public Const TH32CS_SNAPPROCESS = &H2 Public Const TH32CS_SNAPTHREAD = &H4 Public Const TH32CS_SNAPMODULE = &H8 Public Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Public Const hNull = 0 Public Const ERROR_SUCCESS = &H0 Public Const RSP_SIMPLE_SERVICE = 1 Public Const RSP_UNREGISTER_SERVICE = 0 Public Const FO_COPY = &H2 Public Const FOF_ALLOWUNDO = &H40 Public Const MAXDWORD = &HFFFF Public Const INVALID_HANDLE_VALUE = -1 Public Const FILE_ATTRIBUTE_DIRECTORY = &H10 Public Const FILE_ATTRIBUTE_TEMPORARY = &H100 Public Const ANYSIZE_ARRAY = 1 Public Const LB_SETHORIZONTALEXTENT = &H194 Public Const NIM_ADD = &H0 Public Const NIM_MODIFY = &H1 Public Const NIM_DELETE = &H2 Public Const WM_MOUSEMOVE = &H200 Public Const NIF_MESSAGE = &H1 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4 Public Const WM_LBUTTONDBLCLK = &H203 Public Const WM_LBUTTONDOWN = &H201 Public Const WM_LBUTTONUP = &H202 Public Const WM_RBUTTONDBLCLK = &H206 Public Const WM_RBUTTONDOWN = &H204 Public Const WM_RBUTTONUP = &H205 Public Const TOKEN_ADJUST_PRIVILEGES As Long = &H20 Public Const TOKEN_QUERY As Long = &H8
Public Const SE_PRIVILEGE_ENABLED As Long = &H2 Public Const EWX_LOGOFF As Long = &H0 Public Const EWX_SHUTDOWN As Long = &H1 Public Const EWX_REBOOT As Long = &H2 Public Const EWX_FORCE As Long = &H4 Public Const VER_PLATFORM_WIN32_NT As Long = 2 Public Const VER_PLATFORM_WIN32_WINDOWS As Long = 1 Public Const GENERIC_READ = &H80000000 Public Const FILE_SHARE_READ = &H1 Public Const OPEN_EXISTING = 3 Public Const OFFSET_4 = 4294967296#, S11 = 7, S12 = 12, S13 = 17, S14 S23 = 14, S24 = 20, S31 = 4, S32 S41 = 6, S42 = 10, S43 = 15, S44
MAXINT_4 = 2147483647, _ = 22, S21 = 5, S22 = 9, _ = 11, S33 = 16, S34 = 23, _ = 21
Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Public Type BrowseInfo lngHwnd As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type Public Type PicBmp Size As Long tType As Long hBmp As Long hPal As Long Reserved As Long End Type Public Type GUID Data1 As Long Data2 As Integer
Data3 As Integer Data4(7) As Byte End Type Public Type SHFILEOPSTRUCT hWnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Long hNameMappings As Long lpszProgressTitle As String End Type Public Type NOTIFYICONDATA cbSize As Long hWnd As Long UID As Long uflags As Long uCallBackmessage As Long hIcon As Long szTip As String * 64 End Type Public Type PROCESSENTRY32 dwSize As cntUsage As th32ProcessID As th32DefaultHeapID As th32ModuleID As cntThreads As th32ParentProcessID As pcPriClassBase As dwFlags As szExeFile As End Type
Long Long Long Long Long Long Long Long Long String * MAX_PATH
Public Type MODULEENTRY32 dwSize As Long th32ModuleID As Long th32ProcessID As Long GlblcntUsage As Long ProccntUsage As Long modBaseAddr As Long modBaseSize As Long hModule As Long szModule As String * MAX_MODULE_NAME32plus szExePath As String * MAX_PATH End Type Public Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Public Type LUID dwLowPart As Long dwHighPart As Long End Type
Public Type LUID_AND_ATTRIBUTES udtLuid As LUID dwAttributes As Long End Type Public Type TOKEN_PRIVILEGES PrivilegeCount As Long laa As LUID_AND_ATTRIBUTES End Type Public Type SHITEMID cb As Long abID As Byte End Type Public Type ITEMIDLIST mkid As SHITEMID End Type Public Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Public Type POINTAPI x As Long Y As Long End Type Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Type WINDOWPLACEMENT Length As Long flags As Long ShowCmd As Long ptMinPosition As POINTAPI ptMaxPosition As POINTAPI rcNormalPosition As RECT End Type Global Global Public Public Public Public Public Public Public Public Public Public Public Public Public
StopIt As Boolean nid As NOTIFYICONDATA hkey As Long, MainKeyHandle As Long rtn As Long, lBuffer As Long, sBuffer As String lBufferSize As Long lDataSize As Long ByteArray() As Byte Scan As Boolean arrLongConversion(4) As Long arrSplit64(63) As Byte lngTrack As Long uflags As Long success As Long tempHwnd As Long hModule As Long
Module Fungsi Enum reg HKEY_CURRENT_USER = &H80000001 HKEY_CLASSES_ROOT = &H80000000 HKEY_CURRENT_CONFIG = &H80000005 HKEY_LOCAL_MACHINE = &H80000002 HKEY_USERS = &H80000003 HKEY_DYN_DATA = &H80000006 End Enum Enum TypeStringValue REG_SZ = 1 REG_EXPAND_SZ = 2 REG_MULTI_SZ = 7 End Enum Enum TypeBase TypeHexadecimal TypeDecimal End Enum Public Enum TurnMethode ShutDown LogOff Restart End Enum Enum SFolder CSIDL_DESKTOP = &H0 'menunjukkan folder virtual yang menyatakan root untuk semua namespace (/Desktop) CSIDL_PROGRAMS = &H2 'menunjukkan folder sistem yang berisi grup program user (/Programs) CSIDL_CONTROLS = &H3 'menunjukkan folder virtual yang berisi ikonikon aplikasi Control Panel (/Control Panel) CSIDL_PRINTERS = &H4 'menunukkan folder virtual yang berisi printerprinter yang diinstall (/Printers) CSIDL_PERSONAL = &H5 'menunjukkan folder sistem yang digunakan untuk menyimpan dokumen umum user (/My Document) CSIDL_FAVORITES = &H6 'menunjukkan folder yang berisi item-item favorite user (/Favorites) CSIDL_STARTUP = &H7 'menunjukkan folder yang berisi grup program StartUp user (/Startup) CSIDL_RECENT = &H8 'menunjukkan folder sistem yang berisi dokumendokumen yang sering digunakan (/Recent) CSIDL_SENDTO = &H9 'menunjukkan folder yang berisi item menu Send To (/Send To) CSIDL_BITBUCKET = &HA 'menunjukkan folder sistem yang berisi objek file pada RecycleBin user (/Recycle Bin) CSIDL_STARTMENU = &HB 'menunjukkan folder sistem yang berisi itemitem menu Start (/StartMenu) CSIDL_DESKTOPDIRECTORY = &H10 'menunjukkan folder sistem yang dapatkan digunakan untuk menyimpan objek file secara fisik pada desktop CSIDL_DRIVES = &H11 'menunjukkan folder yang berisi segala sesuatu pada komputer lokal (/My Computer) CSIDL_NETWORK = &H12 'menunjukkan folder yang berisi objek link yang kemungkinan ada pda folder virtual My Network Places (/My Network Places) CSIDL_NETHOOD = &H13 'menunjukkan folder yang menyatakan root dari hierarki namespace network (/NetHood) CSIDL_FONTS = &H14 'menunjukkan folder yang berisikan font (/FONT) CSIDL_TEMPLATES = &H15 'menunjukkan folder yang digunakan untuk menyimpan dokumen template (/Template) End Enum
'Get special folder Public Function GetSpecialfolder(JenisFolder As SFolder) As String Dim r As Long Dim IDL As ITEMIDLIST 'get special folder r = SHGetSpecialFolderLocation(100, JenisFolder, IDL) If r = NOERROR Then 'create buffer Path$ = Space$(512) 'Get path from IDList(IDL) r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$) 'Remove chr$(0) GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1) Exit Function End If GetSpecialfolder = "" End Function 'Get User Folder Public Function GetFolderUser() As String Dim r As Long Dim IDL As ITEMIDLIST Dim i As Integer 'Get special folder r = SHGetSpecialFolderLocation(100, CSIDL_PERSONAL, IDL) If r = NOERROR Then 'Create Buffer Path$ = Space$(512) 'Get Path from IDList(IDL) r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$) 'Remove chr$(0) GetFolderUser = Left$(Path, InStr(Path, Chr$(0)) - 1) For i = Len(GetFolderUser) To 1 Step -1 If Mid$(GetFolderUser, i, 1) = "\" Then GetFolderUser = Left(GetFolderUser, i - 1) Exit Function End If DoEvents Next i Exit Function End If GetFolderUser = "" End Function 'Get DocumentAndSettings Path Public Function GetDocumentAndSettings() As String On Error Resume Next Dim i As Integer GetDocumentAndSettings = GetFolderUser For i = Len(GetDocumentAndSettings) To 1 Step -1 If Mid$(GetDocumentAndSettings, i, 1) = "\" Then GetDocumentAndSettings = Left(GetDocumentAndSettings, i 1) Exit Function End If DoEvents Next i GetDocumentAndSettings = ""
End Function 'Get actived User Public Function GetUserAktif() As String On Error Resume Next Dim i As Integer GetUserAktif = GetFolderUser For i = Len(GetUserAktif) To 1 Step -1 If Mid$(GetUserAktif, i, 1) = "\" Then GetUserAktif = Right(GetUserAktif, Len(GetUserAktif) - i) Exit Function End If DoEvents Next i GetUserAktif = "" End Function 'Get LocalSettingUser Path Public Function GetLocalSettingsUser() As String On Error Resume Next Dim r As Long Dim IDL As ITEMIDLIST Dim i As Integer 'dapatkan special folder r = SHGetSpecialFolderLocation(100, CSIDL_PERSONAL, IDL) If r = NOERROR Then 'buat buffer Path$ = Space$(512) 'dapatkan path dari IDList(IDL) r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$) 'hapus karakter chr$(0) yang tidak dibutuhkan GetLocalSettingsUser = Left$(Path, InStr(Path, Chr$(0)) - 1) For i = Len(GetLocalSettingsUser) To 1 Step -1 If Mid$(GetLocalSettingsUser, i, 1) = "\" Then GetLocalSettingsUser = Left(GetLocalSettingsUser, i - 1) & "\Local Settings" Exit Function End If DoEvents Next i Exit Function End If GetLocalSettingsUser = "" End Function 'Get System Path Public Function GetSystemPath() As String On Error Resume Next Dim Buffer As String * 255 Dim x As Long x = GetSystemDirectory(Buffer, 255) GetSystemPath = Left(Buffer, x) & "\" End Function
'Get Windows Path Public Function GetWindowsPath() As String On Error Resume Next Dim Buffer As String * 255 Dim x As Long x = GetWindowsDirectory(Buffer, 255) GetWindowsPath = Left(Buffer, x) & "\" End Function ' Ini merupakan fungsi untuk menghapus Value Registry Public Function DeleteKeyValue(ByVal sKeyName As String, ByVal sValueName As String) DeleteKeyValue = False Dim hkey As Long Call ParseKey(sKeyName, MainKeyHandle) If MainKeyHandle Then rtn = RegOpenKeyEx(MainKeyHandle, sKeyName, 0, KEY_WRITE, hkey) If (rtn = ERROR_SUCCESS) Then rtn = RegDeleteValue(hkey, sValueName) If (rtn <> ERROR_SUCCESS) Then Else DeleteKeyValue = True End If rtn = RegCloseKey(hkey) End If End If End Function Public Function DeleteValue(hkey As reg, Subkey As String, lpValName As String) As Long Dim Ret As Long On Error Resume Next RegOpenKey hkey, Subkey, Ret DeleteValue = RegDeleteValue(Ret, lpValName) RegCloseKey Ret End Function ' Ini merupakan fungsi untuk menghapus key Registry Public Function DeleteKey(KeyName As String) Call ParseKey(KeyName, MainKeyHandle) If MainKeyHandle Then rtn = RegOpenKeyEx(MainKeyHandle, KeyName, 0, KEY_WRITE, hkey) If rtn = ERROR_SUCCESS Then rtn = RegDeleteKey(hkey, KeyName) rtn = RegCloseKey(hkey) End If End If End Function Function GetMainKeyHandle(MainKeyName As String) As Long Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_PERFORMANCE_DATA = &H80000004 Const HKEY_CURRENT_CONFIG = &H80000005 Const HKEY_DYN_DATA = &H80000006 Select Case MainKeyName Case "HKEY_CLASSES_ROOT"
GetMainKeyHandle = HKEY_CLASSES_ROOT Case "HKEY_CURRENT_USER" GetMainKeyHandle = HKEY_CURRENT_USER Case "HKEY_LOCAL_MACHINE" GetMainKeyHandle = HKEY_LOCAL_MACHINE Case "HKEY_USERS" GetMainKeyHandle = HKEY_USERS Case "HKEY_PERFORMANCE_DATA" GetMainKeyHandle = HKEY_PERFORMANCE_DATA Case "HKEY_CURRENT_CONFIG" GetMainKeyHandle = HKEY_CURRENT_CONFIG Case "HKEY_DYN_DATA" GetMainKeyHandle = HKEY_DYN_DATA End Select End Function Private Sub ParseKey(KeyName As String, Keyhandle As Long) rtn = InStr(KeyName, "\") If Left(KeyName, 5) <> "HKEY_" Or Right(KeyName, 1) = "\" Then MsgBox "Incorrect Format:" + Chr(10) + Chr(10) + KeyName Exit Sub ElseIf rtn = 0 Then Keyhandle = GetMainKeyHandle(KeyName) KeyName = "" Else Keyhandle = GetMainKeyHandle(Left(KeyName, rtn - 1)) KeyName = Right(KeyName, Len(KeyName) - rtn) End If End Sub 'fungsi untuk membuat key Registry Function CreateKey(Subkey As String) Call ParseKey(Subkey, MainKeyHandle) If MainKeyHandle Then rtn = RegCreateKey(MainKeyHandle, Subkey, hkey) If rtn = ERROR_SUCCESS Then rtn = RegCloseKey(hkey) End If End If End Function Public Sub EnumRegister(pathKey As Long, hPath As String) Dim hkey As Long, Cnt As Long, sName As String, sData As String, Ret As Long, RetData As Long Const BUFFER_SIZE As Long = 255 Cnt = 0 If RegOpenKey(pathKey, hPath, hkey) = 0 Then sName = Space(BUFFER_SIZE) sData = Space(BUFFER_SIZE) Ret = BUFFER_SIZE RetData = BUFFER_SIZE While RegEnumValue(hkey, Cnt, sName, Ret, 0, ByVal 0&, ByVal sData, RetData) <> ERROR_NO_MORE_ITEMS If virilocal.Count > 0 Then Dim i As Integer For i = 1 To virilocal.Count If InStr(1, Left$(sData, RetData - 1), virilocal(i), vbTextCompare) > 0 Then 'If RetData > 0 Then Me.Print " " + Left$(sName, Ret) + "=" + Left$(sData, RetData - 1) DelSetting pathKey, hPath, Left$(sName, Ret) End If Next i End If Cnt = Cnt + 1
sName = Space(BUFFER_SIZE) sData = Space(BUFFER_SIZE) Ret = BUFFER_SIZE RetData = BUFFER_SIZE Wend RegCloseKey hkey End If End Sub Public Sub DelSetting(hkey As Long, strPath As String, strValue As String) Dim Ret RegCreateKey hkey, strPath, Ret RegDeleteValue Ret, strValue RegCloseKey Ret End Sub 'fungsi untuk membaca file INI Function ReadINI(ByVal Section, ByVal KeyName, ByVal Filename As String) As String Dim sRet As String sRet = String(255, Chr(0)) ReadINI = Left(sRet, GetPrivateProfileString(Section, ByVal KeyName, "", sRet, Len(sRet), Filename)) End Function 'fungsi untuk menulis ke file INI Function writeini(ByVal sSection As String, ByVal sKeyName As String, ByVal sNewString As String, ByVal sFileName) As Integer Dim r r = WritePrivateProfileString(sSection, sKeyName, sNewString, sFileName) End Function 'fungsi untuk mencari file Public Function FindFiles(myPath As String, MyWild As String, _ SignName As ListBox, SignType As ListBox, Signature As _ ListBox, SizeLimit As Long, ScMode As String, MyCRC As _ CRC, MyList As ListBox, NameList As ListBox, MyLabel As _ Label, MyLog As TextBox) Dim Filename As String Dim DirName As String Dim dirNames() As String Dim nDir As Integer Dim i As Integer On Error GoTo FileERR If StopIt = True Then GoTo FileERR If Len(myPath) = 0 Then Exit Function If Right(myPath, 1) <> "\" Then myPath = myPath & "\" nDir = 0 ReDim dirNames(nDir) DirName = Dir(myPath, vbDirectory Or vbHidden) Do While Len(DirName) > 0 If (DirName <> ".") And (DirName <> "..") Then If GetAttr(myPath & DirName) = vbDirectory Or vbHidden Or _ vbReadOnly Or vbSystem Then dirNames(nDir) = DirName nDir = nDir + 1 ReDim Preserve dirNames(nDir) End If End If DirName = Dir() Loop Filename = Dir(myPath & MyWild, vbNormal Or vbHidden Or _ vbReadOnly) Do While Len(Filename) <> 0
If StopIt = True Then GoTo FileERR FindFiles = FindFiles + FileLen(myPath & Filename) MyLabel.Caption = myPath & Filename DoEvents If FileLen(myPath & Filename) > SizeLimit Then GoTo limitz For i = 0 To Signature.ListCount - 1 '========== Check CRC ============ If MyCRC.FromFile(myPath & Filename) = Signature.List(i) Then If ScMode = "AUTO" Then WinExit Filename MyList.AddItem myPath & Filename NameList.AddItem ("File " & Filename & ", detected as: " & _ SignName.List(i)) MyLog.Text = MyLog.Text & myPath & Filename _ & " ==> " & " detected as: " & SignName.List(i) & vbCrLf End If Next i limitz: Filename = Dir() Loop If nDir > 0 Then For i = 0 To nDir - 1 FindFiles = FindFiles + FindFiles(myPath & dirNames(i) & "\", _ MyWild, SignName, SignType, Signature, SizeLimit, ScMode, _ MyCRC, MyList, NameList, MyLabel, MyLog) Next i End If FileERR: End Function Private Function getRight(Key As String, Length As Long) As String Dim NumChar As Long, i As Long NumChar = Len(Key) For i = 1 To Length NumChar = InStrRev(Key, "\", NumChar - 1) If NumChar = 0 Then Exit For Next i getRight = Right$(Key, Len(Key) - NumChar) End Function Public Function GetFileName(Path As String, Extension As Boolean) As String Dim NumChar As Long GetFileName = getRight(Path, 1) If Not Extension Then NumChar = InStrRev(GetFileName, ".") If NumChar <> 0 Then GetFileName = Left(GetFileName, NumChar - 1) End If End If End Function Public Function Parse(Filename As String, Optional delimiter As String = vbTab) As Variant() Dim lines() As String, i As Long lines() = Split(OpFile(Filename), vbCrLf) For i = 0 To UBound(lines) If Len(lines(i)) = 0 Then lines(i) = vbNullChar Next lines() = Filter(lines(), vbNullChar, False) ReDim DatFile(0 To UBound(lines)) As Variant For i = 0 To UBound(lines) DatFile(i) = Split(lines(i), delimiter) Next Parse = DatFile()
End Function Private Function OpFile(Filename As String) As String Dim fnum As Integer, isOpen As Boolean On Error GoTo Error_Handler fnum = FreeFile() Open Filename For Input As #fnum isOpen = True OpFile = Input(LOF(fnum), fnum) Error_Handler: If isOpen Then Close #fnum If Err Then Err.Raise Err.Number, , Err.Description End Function Private Function CheckPrivilege() As Boolean #If Win32 Then Dim OSV As OSVERSIONINFO OSV.dwOSVersionInfoSize = Len(OSV) If GetVersionEx(OSV) = 1 Then CheckPrivilege = (OSV.dwPlatformId = VER_PLATFORM_WIN32_NT) And (OSV.dwMajorVersion >= 4) End If #End If End Function Private Function WithPrivilege() As Boolean Dim hProcessHandle As Long Dim hTokenHandle As Long Dim lpv_la As LUID Dim token As TOKEN_PRIVILEGES hProcessHandle = GetCurrentProcess() If hProcessHandle <> 0 Then If OpenProcessToken(hProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hTokenHandle) <> 0 Then If LookupPrivilegeValue(vbNullString, "SeShutdownPrivilege", lpv_la) <> 0 Then With token .PrivilegeCount = 1 .laa.udtLuid = lpv_la .laa.dwAttributes = SE_PRIVILEGE_ENABLED End With If AdjustTokenPrivileges(hTokenHandle, False, token, ByVal 0&, ByVal 0&, ByVal 0&) <> 0 Then WithPrivilege = True End If End If End If End If End Function Public Function TurnOff(Methode As TurnMethode, ForceOff As Boolean) If Methode = ShutDown Then uflags = EWX_SHUTDOWN End If If Methode = LogOff Then uflags = EWX_LOGOFF End If If Methode = Restart Then uflags = EWX_REBOOT End If If CheckPrivilege() Then success = WithPrivilege() End If If ForceOff = True Then uflags = uflags Or EWX_FORCE If success Then
Call ExitWindowsEx(uflags, 0&) Else Call ExitWindowsEx(uflags, 0&) End If End Function Public Function WinExit(sExeNam As String) Dim lLng As Long, lA As Long, lExCode As Long Dim procObj As PROCESSENTRY32 Dim hSnap As Long Dim lRet As Long hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&) procObj.dwSize = Len(procObj) lRet = Process32First(hSnap, procObj) Do While Process32Next(hSnap, procObj) If InStr(1, LCase(procObj.szExeFile), LCase(sExeNam$)) > 0 Then lLng = OpenProcess(&H1, ByVal 0&, procObj.th32ProcessID) lA = TerminateProcess(lLng, lExCode) Exit Do End If Loop End Function Public Function Namafile(sPath As String) As String Dim Buffer As String Buffer = String(255, 0) GetFileTitle sPath, Buffer, 255 Namafile = Left$(Buffer, InStr(1, Buffer, Chr$(0)) - 1) End Function Public Function FillProcessListNT(lstBox As ListBox, tipe As String) As Long On Error Resume Next Dim cb As Long Dim cbNeeded As Long Dim NumElements As Long Dim ProcessIDs() As Long Dim cbNeeded2 As Long Dim NumElements2 As Long Dim Modules(1 To 200) As Long Dim lRet As Long Dim ModuleName As String Dim nSize As Long Dim hprocess As Long Dim i As Long Dim sModName As String Dim sChildModName As String Dim iModDlls As Long Dim iProcesses As Integer Dim hproses As Long lstBox.Clear cb = 8 cbNeeded = 96 Do While cb <= cbNeeded cb = cb * 2 ReDim ProcessIDs(cb / 4) As Long lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded) Loop NumElements = cbNeeded / 4
For i = 1 To NumElements hprocess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessIDs(i)) If hprocess Then lRet = EnumProcessModules(hprocess, Modules(1), 200, cbNeeded2) If lRet <> 0 Then ModuleName = Space(MAX_PATH) nSize = 500 lRet = GetModuleFileNameExA(hprocess, Modules(1), ModuleName, nSize) sModName = Left$(ModuleName, lRet) lstBox.AddItem sModName iProcesses = iProcesses + 1 iModDlls = 1 frmKetiga.CRC1.Path = sModName hproses = OpenProcess(&H1F0FFF, 1, ProcessIDs(i)) lstBox.ItemData(lstBox.NewIndex) = hproses Do iModDlls = iModDlls + 1 ModuleName = Space(MAX_PATH) nSize = 500 lRet = GetModuleFileNameExA(hprocess, Modules(iModDlls), ModuleName, nSize) sChildModName = Left$(ModuleName, lRet) If sChildModName = sModName Then Exit Do If tipe = "1" Then If Trim(sChildModName) <> "" Then lstBox.AddItem sChildModName Else If Trim(sChildModName) <> "" Then lstBox.AddItem " " & Namafile(sChildModName) End If lstBox.ItemData(lstBox.NewIndex) = hprocess Loop End If Else FillProcessListNT = 0 End If lRet = CloseHandle(hprocess) Next FillProcessListNT = iProcesses End Function Public Function BrowseForFolder(ByVal strPrompt As String) As String On Error GoTo ehBrowseForFolder Dim intNull As Integer Dim lngIDList As Long, lngResult As Long Dim strPath As String Dim udtBI As BrowseInfo With udtBI .lngHwnd = 0 .lpszTitle = lstrcat(strPrompt, "") .ulFlags = BIF_RETURNONLYFSDIRS End With lngIDList = SHBrowseForFolder(udtBI)
If lngIDList <> 0 Then strPath = String(MAX_PATH, 0) lngResult = SHGetPathFromIDList(lngIDList, strPath) Call CoTaskMemFree(lngIDList) intNull = InStr(strPath, vbNullChar) If intNull > 0 Then strPath = Left(strPath, intNull - 1) End If End If BrowseForFolder = strPath Exit Function ehBrowseForFolder: BrowseForFolder = Empty End Function 'Membuat atau mengeset Dword Value Registry Public Function CreateDwordValue(hkey As reg, Subkey As String, strValueName As String, dwordData As Long) As Long On Error GoTo salah Dim Ret As Long RegCreateKey hkey, Subkey, Ret CreateDwordValue = RegSetValueEx(Ret, strValueName, 0, REG_DWORD, dwordData, 4) RegCloseKey Ret Exit Function salah: MsgBox "Pembuatan value registry gagal", vbInformation, Err.Number End Function 'Membuat atau mengeset Value Registry Public Function CreateStringValue(hkey As reg, Subkey As String, RTypeStringValue As TypeStringValue, strValueName As String, strData As String) As Long On Error GoTo salah Dim Ret As Long RegCreateKey hkey, Subkey, Ret CreateStringValue = RegSetValueEx(Ret, strValueName, 0, RTypeStringValue, ByVal strData, Len(strData)) RegCloseKey Ret Exit Function salah: MsgBox "Pembuatan value registry gagal", vbInformation, Err.Number End Function Public Function GetWindowsVersion(ByRef IsWinXp As Boolean) As String Dim TheOS As OSVERSIONINFO TheOS.dwOSVersionInfoSize = Len(TheOS) GetVersionEx TheOS If TheOS.dwMajorVersion = 5 Then IsWinXp = True Else IsWinXp = False End If End Function Public Function SaveDword(Subkey As String, isi As String, dword As Long)
Dim hregkey As Long Dim Y As Long Y = RegCreateKey(HKEY_CURRENT_USER, Subkey, hregkey) Y = RegSetValueEx(hregkey, isi, 0, REG_DWORD, dword, 4) Y = RegCloseKey(hregkey) End Function Public Function SaveString(Subkey As String, strPath As String, strValue As String, strData As String) Dim hregkey As Long Dim Y As Long Y = RegCreateKey(Subkey, strPath, hregkey) Y = RegSetValueEx(hregkey, strValue, 0, REG_SZ, ByVal strData, Len(strData)) Y = RegCloseKey(hregkey) End Function Public Function GetDword(hkey As reg, strPath As String, strValue As String) As String On Error Resume Next Dim Ret As Long RegOpenKey hkey, strPath, Ret GetDword = RegQueryValue(Ret, strValue) RegCloseKey Ret End Function Public Function GetString(hkey As Long, strPath As String, strValue As String) On Error Resume Next Dim Ret As Long RegOpenKey hkey, strPath, Ret GetString = RegQueryValue(Ret, strValue) RegCloseKey Ret End Function Public Function RegQueryValue(ByVal hkey As Long, ByVal strValueName As String) As String Dim lResult As Long Dim lValueType As Long Dim strBuf As String Dim lDataBufSize As Long lResult = RegQueryValueEx(hkey, strValueName, 0, lValueType, ByVal 0, lDataBufSize) If lResult = 0 Then If lValueType = REG_SZ Then strBuf = String(lDataBufSize, Chr$(0)) lResult = RegQueryValueEx(hkey, strValueName, 0, 0, ByVal strBuf, lDataBufSize) If lResult = 0 Then RegQueryValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) 1) End If ElseIf lValueType = REG_DWORD Then Dim strData As Integer lResult = RegQueryValueEx(hkey, strValueName, 0, 0, strData, lDataBufSize) If lResult = 0 Then RegQueryValue = strData End If End If End If End Function
Public Function ReplaceString(sTarget As String, sSearchString As String, sReplaceString As String) As String Dim sTemp As String Dim lLength As Long lLength = Len(sTarget) sTemp = Replace(sTarget, sSearchString, sReplaceString, 1, lLength, vbTextCompare) ReplaceString = sTemp End Function Public Function Rubahstr(Target As String) As Long Select Case Target Case "HKEY_CLASSES_ROOT" Rubahstr = HKEY_CLASSES_ROOT Case "HKEY_CURRENT_USER" Rubahstr = HKEY_CURRENT_USER Case "HKEY_LOCAL_MACHINE" Rubahstr = HKEY_LOCAL_MACHINE Case "HKEY_USERS" Rubahstr = HKEY_USERS Case "HKEY_PERFORMANCE_DATA" Rubahstr = HKEY_PERFORMANCE_DATA Case "HKEY_CURRENT_CONFIG" Rubahstr = HKEY_CURRENT_CONFIG Case "HKEY_DYN_DATA" Rubahstr = HKEY_DYN_DATA End Select End Function 'fungsi untuk mengambil icon dari file execute Public Function GetIconFromFile(Filename As String, UseLargeIcon As Boolean) As IPictureDisp Dim hlargeicon As Long Dim hsmallicon As Long Dim selhandle As Long Dim pic As PicBmp Dim IPic As IPictureDisp Dim IID_IDispatch As GUID If ExtractIconEx(Filename, 0, hlargeicon, hsmallicon, 1) > 0 Then If UseLargeIcon Then selhandle = hlargeicon Else selhandle = hsmallicon End If With IID_IDispatch .Data1 = &H20400 .Data4(0) = &HC0 .Data4(7) = &H46 End With With pic .Size = Len(pic) .tType = vbPicTypeIcon .hBmp = selhandle End With Call OleCreatePictureIndirect(pic, IID_IDispatch, 1, IPic) Set GetIconFromFile = IPic SavePicture IPic, App.Path & "\hash.dat"
DoEvents DestroyIcon hsmallicon DestroyIcon hlargeicon 'simpan data icon tersebut kedalam file hash.dat End If End Function 'Fungsi untuk mengambil ukuran file Public Function AmbilUkuranFile(ByVal sPath As String) As Double Dim hFile As Long, lngLong As Long On Error Resume Next hFile = CreateFile(sPath, GENERIC_READ, FILE_SHARE_READ, ByVal 0&, OPEN_EXISTING, ByVal 0&, ByVal 0&) AmbilUkuranFile = Round((GetFileSize(hFile, lngLong)) / 1024, 3) CloseHandle hFile End Function 'Fungsi untuk mengambil nama file Public Function AmbilNamaFile(ByVal sPath As String) As String On Error Resume Next Dim Buffer As String Buffer = String(255, 0) GetFileTitle sPath, Buffer, Len(Buffer) AmbilNamaFile = Left$(Buffer, InStr(1, Buffer, Chr$(0)) - 1) End Function 'Fungsi untuk mengambil path Public Function AmbilPath(ByVal sPath As String) As String Dim i As Integer For i = Len(sPath) To 1 Step -1 If Mid$(sPath, i, 1) = "\" Then AmbilPath = Mid$(sPath, 1, i) Exit For End If Next i End Function 'Fungsi untuk menghapus file Public Function HapusFile(ByVal sPath As String) As Long On Error Resume Next SetFileAttributes sPath, FILE_ATTRIBUTE_NORMAL HapusFile = DeleteFile(sPath) End Function 'Fungsi untuk memindahkan file Public Function PindahkanFile(ByVal Sumber As String, ByVal tujuan As String) As Long On Error Resume Next SetFileAttributes Sumber, FILE_ATTRIBUTE_NORMAL PindahkanFile = MoveFile(Sumber, tujuan) End Function
'Fungsi untuk membuat folder Public Function BuatFolder(ByVal sPath As String) As Long On Error Resume Next Dim Security As SECURITY_ATTRIBUTES BuatFolder = CreateDirectory(sPath, Security) End Function Public Sub CleanReg() On Error Resume Next 'mengaktifkan kembali Regsitry Tools CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools", 0 CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools", 0 'mengaktifkan Task manager CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System\", "DisableTaskMgr", 0 CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\", "DisableTaskMgr", 0 'mengaktifkan kembali CMD CreateDwordValue HKEY_CURRENT_USER, "Software\Policies\Microsoft\Windows\System", "DisableCMD", 0 'memunculkan kembali Folder Options CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFolderOptions", 0 CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFolderOptions", 0 DeleteValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell" 'memperbaiki registry yang dirusak CreateStringValue HKEY_CLASSES_ROOT, "exefile\shell\open\command", REG_SZ, "", Chr(&H22) & "%1" & Chr(&H22) & " %*" CreateStringValue HKEY_CLASSES_ROOT, "lnkfile\shell\open\command", REG_SZ, "", Chr(&H22) & "%1" & Chr(&H22) & " %*" CreateStringValue HKEY_CLASSES_ROOT, "piffile\shell\open\command", REG_SZ, "", Chr(&H22) & "%1" & Chr(&H22) & " %*" CreateStringValue HKEY_CLASSES_ROOT, "batfile\shell\open\command", REG_SZ, "", Chr(&H22) & "%1" & Chr(&H22) & " %*" CreateStringValue HKEY_CLASSES_ROOT, "comfile\shell\open\command", REG_SZ, "", Chr(&H22) & "%1" & Chr(&H22) & " %*" CreateStringValue HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\SafeBoot\", REG_SZ, "AlternateShell", "cmd.exe" CreateStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", REG_SZ, "Userinit", GetSystemPath & "userinit.exe" CreateStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug", REG_SZ, "Debugger", Chr(&H22) & Left(GetWindowsPath, 3) & "Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe" & Chr(&H22) & " -p %ld -e %ld" CreateStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug", REG_SZ, "Auto", "0"
CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp\", "Disabled", 0 CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WinOldApp\", "Disabled", 0 CreateStringValue HKEY_CLASSES_ROOT, "exefile", REG_SZ, "", "Application" CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore", "DisableConfig", 0 CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore", "DisableSR", 0 CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Policies\Microsoft\Windows\Installer", "LimitSystemRestoreCheckpointing", 0 CreateDwordValue HKEY_LOCAL_MACHINE, "SOFTWARE\Policies\Microsoft\Windows\Installer", "DisableMSI", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoClose", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDesktop", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDriveTypeAutoRun", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoLogoff", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFind", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoTrayContextMenu", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoViewContextMenu", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", "NoDispSettingsPage", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", "NoDispBackgroundPage", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", "NoScrSavPage", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", "NoDispApprearancePage", 0 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", "NoDispCpl", 0 CreateStringValue HKEY_CURRENT_USER, "Control Panel\Desktop\", REG_SZ, "SCRNSAVE.EXE", "" 'atur registry agar file dengan yang disembunyikan tidak tampil CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\", "HideFileExt", 1
CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\", "Hidden", 1 CreateDwordValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\", "ShowSuperHidden", 1 DeleteValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDrive" DeleteValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoDrive" DeleteValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "DisableRegistryTools" DeleteValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "DisableRegistryTools" DeleteValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "shutdownwithoutlogon" DeleteValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "undockwithoutlogon" DoEvents End Sub