Sabtu, 06 Februari 2010

Registry-Mania : Mengakses registry dengan file INF

By Tri Amperiyanto


Mungkin Anda pernah mengalami kacaunya data registry, dengan berbagai pemicu penimbul masalah, seperti serangan virus, malware atau karena kesalahan penggunaan program Registry Editor (regedit).  Masalah akan menjadi lebih rumit, saat akan memperbaiki registry,  ternyata program regedit tidak mau dijalankan karena dikunci.
Tanpa bantuan program Regedit, tentu akan membuat akses ke registry menjadi terhambat. Sehingga setingan registry yang kacau menjadi sulit tersentuh untuk diperbaiki.

Jika hal ini terjadi, janganlah menyerah dahulu.  Anda masih dapat memperbaikinya dengan tools-tools yang dapat memanipulasi registry.  Tapi apa daya, jika Anda ternyata tidak dapat memperoleh tools-tools “sakti”  tersebut ?  Tenang saja,  Anda masih dapat memanipulasi registry dengan memanfaatkan file Windows standar Windows lainnya, yang bernama file INF.  Regedit ditolak, INF bertindak !


Mengenal File INF
File INF ini sebenarnya adalah file untuk instalasi program Windows. Ekstension yang dipakai adalah *.INF.   Pada kenyataannya, file jenis INF adalah suatu file teks yang dibagi menjadi beberapa bagian yang dikenal dengan istilah Section. 
Setiap Section didesain untuk suatu keperluan tertentu, seperti untuk mengopi file atau menambah masukan ke registry.   Jumlah dan jenis Section pada suatu file bergantung kepada maksud prosedur instalasi yang akan dijalankan.  Sehingga, isi suatu file INF dapat terdiri dari beberapa baris saja, namun tidak sedikit pula yang berisi puluhan baris data.


Beberapa Komponen pada Section

Cukup banyak Section yang dapat dipasangkan pada file INF, berikut ini adalah beberapa diantaranya.
[Version]
Berisi informasi tentang suatu file INF.  Section ini wajib ada pada setiap file dengan jenis INF.  Atau dapat dikatakan, bagian ini adalah Header dari file dengan format INF.  Jadi, Section ini untuk memvalidasi file INF.
 [DefaultInstall]
Berisi suatu pointer ke bagian (Section) lain, yang menyebutkan apakah file akan dikopi, dihapus, atau melakukan manipulasi registry, dan lain sebagainya. Secara default Section ini akan  selalu dieksekusi
[OtherInstall]
Section ini memakai format yang sama dengan Section [DefaultInstall], hanya saja harus secara eksplisit diaktifkan.  Umumnya, bagian ini digunakan untuk mendefinisikan bagaimana suatu komponen harus di-uninstall.
[DestinationDirs]
Section ini merujuk ke lokasi dari hardisk, dimana file yang akan dikopi, dihapus atau di-rename.
 [SourceDisksNames]
Section yang berisi daftar dari disk yang bersi file.
[SourceDisksFiles]
Section yang berisi daftar disk spesifik dimana setiap file berada.


Lebih jauh : Section [Version]

Bagian ini akan selalu ada pada file INF.  Karena ia memuat Signature dari file INF.  Standar signature header-nya adalah $Chicago$. Bentuk penulisannya adalah sebagai berikut :

[Version]
Signature="$Chicago$"
LayoutFile=filename.inf
Provider = cybersufi

String pada signature tidak case sensitive.  Artinya ia tidak membedakan besar kecilnya huruf. Maka dapat dituliskan $Chicago$ atau  $CHICAGO$.
Pada contoh petikan section [Version] di atas, terdapat masukan LayoutFile=filename.inf yang  mendefinisikan informasi layout (source disk dan file) yang dibutuhkan untuk menginstal suatu komponen.  Pilihan ini bersifat opsional.  Jika masukan ini tidak ada, maka section [SourceDisksNames] dan [SourceDisksFiles] harus disebutkan tersendiri dalam file INF yang dibuat.
Sedangkan  masukan Provider=Cybersufi  lebih digunakan untuk menunjukkan pembuat atau penyedia file INF tersebut. Pilihan ini juga opsional. 

Lebih jauh : Section [DefaultInstall]

Section Install terdiri dari dua, [DefaultInstall] dan [OtherInstall]. Keduanya memakai tata cara format yang sama.  Umumnya hanya Section [DefaultInstall] saja yang ada dalam suatu file INF. Section ini akan berisi beberapa masukan data, diantaranya adalah :
CopyFiles = section file-list. Digunakan untuk mengopi file dibutuhkan.
RenFiles = section file-list. Digunakan untuk mengganti nama file dibutuhkan.
DelFiles = section file-list. Digunakan untuk menghapus file dibutuhkan.
AddReg = Section add-registry. Digunakan untuk menambah data di registry.
DelReg = Section del-registry. Digunakan untuk menghapus data di registry.
Section install, secara standar digunakan untuk mengidentifikasikan Section tambahan untuk instalasi komponen.

Section menambah data registry

Untuk dapat memanipulasi registry, maka dibutuhkan suatu masukan pada Section [default Install], yang menyebutkan suatu Section dimana perintah-perintah penambahan data registry berada. Sintak penulisannya adalah sebagai berikut :

[Section AddReg]
String reg-root, [subkey], [value-name], [flag], [value]

[Section AddReg]
Nama Section tidak harus dituliskan [Section AddReg], namun dapat dituliskan sembarang nama. Misalnya, menjadi [Registry-ku] atau [reg-tambah]. Sesuaikanlah dengan selera.
Masukan data pada String reg-root adalah nama dari Registry root. Nilai yang dapat dimasukkan adalah :
HKCR mewakili  HKEY_CLASSES_ROOT
HKCU mewakili HKEY_CURRENT_USER
HKLM mewakili HKEY_LOCAL_MACHINE
HKU mewakili HKEY_USERS
Masukan [Subkey] berisi alamat subkey.  Dituliskan dengan format : key1\key2\key3 dst. Sebagai contoh : software\microsoft\windows.
Masukan [Value-name] adalah nama value yang akan ditambahkan. Masukan ini disesuaikan dengan yang dibutuhkan.  Sebagai  contoh: misalnya : NoRun, NoFind, dsb.
Jika masukan ini kosong, maka masukannya akan diset dengan suatu NULL string.
Masukan [Flag] berguna untuk menentukan jenis value dan menentukan apakah nilainya akan diganti ataukah tidak.  Empat masukan dapat dipakai, sebagai berikut :
0 -  Inilah adalah nilai Default. Valuenya adalah jenis string ANSI dan nilai akan diganti jika sudah ada.
1 - Valuenya adalah jenis hexadecimal dan nilai akan diganti jika sudah ada.
2 - Valuenya adalah jenis ANSI string dan nilai tidak akan diganti jika sudah ada.
3 - Valuenya adalah jenis hexadecimal dan nilai tidak akan diganti jika sudah ada.

Masukan [Value] adalah nilai yang akan dipasangkan.  Contoh pemakaiannya adalah :

[Tambah-Registry]
HKLM,Software\Test,Coba,,"Aplikasiku "

Artinya, membuat suatu Section dengan nama [Tambah-Registry]. Nama value dibentuk di lokasi HKLM\Sofware\Test. HKLM adalah masukan string reg-root. Sedangkan \Sofware\Test adalah masukan dari [Subkey].  Masukan [Value-name] adalah Coba. Sedangkan jenis datanya yang akan dibentuk adalah string, karena masukan [Flag] adalah kosong  (tidak diisi).  Masukan  [Value] adalah  “Aplikasiku”. 


Section menghapus data registry

Sama halnya dengan Section penambahan data registry, Section ini membutuhkan suatu masukan pada Section [default Install], yang menyebutkan suatu Section, dimana perintah-perintah penghapusan registry berada. Sintak penulisannya adalah sebagai berikut :

[Section DelReg]
String reg-root, subkey, [value-name]

[Section DelReg]
Nama Section tidak harus dituliskan [Section DelReg], namun dapat diisi dengan sembarang nama. Misalnya menjadi [HapusRegistry] atau [reg-Hapus]. Sesuaikan dengan selera.
String reg-root adalah Registry root name. Nilai yang dapat dimasukkan adalah sama dengan penambahan registry. (Lihat bagian penambahan data registry).
Subkey berisi alamat subkey yang dituliskan dengan format : key1\key2\key3 dst. Sebagai contoh misalnya : software\policies\control panel.
[Value name] adalah nama value yang akan dihapus. Masukan ini disesuaikan dengan yang data yang akan dihapus.  Sebagai  contoh: misalnya : NoControlPanel,  NoClose, dll.


Praktek lapangan

Gambar 1. memanggil notepad via jendela Run

Asumsikan, kita memanggil program Registry Editor, dengan cara klik Start-Run dan ketik : Regedit, lalu tekan Enter. Saat Regedit tampil, pemeriksaan dilaksanakan pada lokasi :
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Ternyata, anggaplah, subkey Explorer berisi satu nama value : NoFind. (Nama value ini berguna untuk menyembunyikan perintah Search pada menu Start)
Juga, asumsikan, suatu file INF akan dibuat dengan tujuan menghapus nama value Nofind tersebut dan membuat suatu nama value baru : NoRun.  (Nama value ini berguna untuk menyembunyikan perintah Run pada menu Start)
Panggil Notepad dengan mengklik Start-Run lalu ketik : Notepad dan tekan Enter. (gambar 1)


Gambar 2. memanggil notepad via jendela Run

Saat program Notepad aktif, ketikkan  data sebagai berikut :

[Version]
Signature="$Chicago$"
Provider=CyberSufi

[DefaultInstall]
AddReg=tambah
DelReg=Hapus

[Tambah]
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFind,1,1

[Hapus]
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoRun

Berikut Keterangan singkat skrip di atas.   Pada Section [Version] disebutkan entri signature berisi data $Chicago$. Pembuat skrip, CyberSufi, dalam hal ini dimasukkan pada masukan Provider.
Pada Section [DefaultInstall] disebutkan bahwa akan dilakukan penambahan data pada registry dengan entri Addreg.  Sedangkan masukan dari AddReg adalah nama Section yang bernama [Tambah]. Selain itu, akan dilakukan pula penghapusan data registry yang diwakili dengan entri DelReg yang menyebutkan bahwa data-data yang akan dihapus ada di section yang bernama [Hapus].
Pada Section [Tambah], manipulasi dilakukan di subkey Explorer yang berada di bawah alamat : HKLM\Software\Microsoft\Windows\CurrentVersion\Policies.  Nama value yang dimaksud, adalah : NoFind dengan jenis masukan datanya Hexadecimal (diwakili dengan angka 1 pada isian flags) dan nilai valuenya adalah 1.
Pada Section [Hapus] nama value NoFind yang akan dihapus. Sedangkan alamat dimana nama value tersebut berada, ada di :  HKLM\Software\Microsoft\Windows\CurrentVersion\Policies,

Gambar 3. mengetik data-data calon file INF.

Setelah seluruh skrip diketikkan, simpan dengan mengklik File-Save. Jendela Save As akan muncul.  Pada isian File name, ketikkan Test.inf dan klik Save. File Test.inf akan disimpan di My Document.
Gambar 4. menyimpan file  Test.inf di My Documents

Setelah keluar dari program Notepad, buka My Documents. Pada folder tersebut akan muncul suatu file baru dengan nama Test.inf.  inilah file INF yang akan diujicobakan.
Gambar 5. memanggil notepad via jendela Run

Agar nilai-nilai yang ada dalam file INF dieksekusi,  klik kanan File Test.inf.  Saat menu konteks muncul, klik Install.  Dengan cara ini, isi file INF akan mengakses registry.
Gambar 6. memanggil menu konteks dan memilih Install.

Jika nanti regedit diaktifkan, dan isi subkey Explorer diperiksa, ternyata nama value NoFind akan hilang karena dihapus oleh proses file Test.inf. Sebagai gantinya, akan muncul nama value baru : NoRun.    

Gambar 7. memanggil notepad via jendela Run

Mengembangkan INF

Contoh sederhana pemakaian File INF ini, dapat dikembangkan secara lebih kompleks   dengan menambahkan data-data yang akan dimanipulasi.  Dengan begitu, file INF dapat didayagunakan untuk mengatur setingan komputer supaya lebih aman, via registry  dengan jalan mematikan fitur-fitur yang diinginkan. 
Untuk dapat berjalan dengan aman dan baik, disarankan untuk membuat dua file INF.  Satu file digunakan untuk memasangkan nilai setingan baru untuk memanipulasi registry. File kedua, digunakan untuk menormalkan kembali dengan cara menghapus setingan yang telah dibuat.
Kepiawaian Anda dalam mengenal setingan (alamat subkey, nama value dan nilainya) registry, amat berperan dalam menentukan hebat tidaknya Tools INF yang dibuat. Sebagai start awal, lihat dua skrip sederhana untuk menulis dan menghapus data registry. 

Skrip menambah kekuatan file INF untuk mengatur beberapa setingan registry. 
Tanda ; merupakan komentar fungsi yang dilakukan. Buat file INF baru dan ketikkan data sebagai berikut.

[Version]
Signature="$Chicago$"
Provider=CyberSufi

[DefaultInstall]
AddReg=tambah
DelReg=Hapus

[Tambah]
;sembunyikan find
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFind,1,1
;sembunyikan Run
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoRun,1,1
;sembunyikan Shutdown
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoClose,1,1
;sembunyikan LogOff
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoLogoff,1,1
;sembunyikan folder options
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFolderOptions,1,1
;sembunyikan File sharing
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Network,NoFileSharing,1,1
;sembunyikan Print Sharing
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Network,NoPrintSharing,1,1
;sembunyikan entire network
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Network,NoEntireNetwork,1,1
;Matikan Registry Editor
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryEditor,1,1
;Matikan Task Manager
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableTaskManager,1,1
;Matikan  Add remove program
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall,NoAddRemovePrograms,1,1
;Matikan AddFromCD
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall,NoAddFromCDs,1,1
;Matikan RemovePage
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall,NoRemovePage,1,1
;Matikan DOS prompt
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp,Disabled,1,1
;Matikan akses real mode dos
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp,NoRealMode,1,1

[Hapus]

Skrip meghapus registry.  
Buat file INF baru dan ketikkan data sebagai berikut.

[Version]
Signature="$Chicago$"
Provider=CyberSufi

[DefaultInstall]
AddReg=tambah
DelReg=Hapus

[Tambah]
   
[Hapus]
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoRun
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFind
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoRun
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoClose
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoLogoff
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFolderOptions
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Network,NoFileSharing
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Network,NoPrintSharing
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Network,NoEntireNetwork
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryEditor
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableTaskManager
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall,NoAddRemovePrograms
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall,NoAddFromCDs
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall,NoRemovePage
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp,Disabled
HKLM,Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp,NoRealMode





Note :
Tulisan ini  telah dimuat di majalah CHIP, dengan bahasa yang telah  “diformalkan”.
Tulisan ini adalah versi aslinya !  Semoga berguna dan digunakan

Tidak ada komentar:

Posting Komentar