Random Post
Loading...
Selasa, 15 Januari 2013

Tentang File .dll (Dynamic Link Library)

4:58 PM

Dynamic Link Library (DLL) file merupakan bagian penting dari sistem operasi Windows, sebab file ini menentukan apakah suatu program aplikasi (file.exe) dapat berjalan atau tidak.

Walaupun keberadaan nya tersebar di banyak tempat dalam sistem operasi, kebanyakan pengguna PC tidak tahu atau tidak peduli apa yang di lakukan file-file ini.
Meskipun demikian, dengan sedikit memahami tentang peran yang dimainkan file DLL, akan bisa sedikit membuka “misteri” komputer.

Hanya programer dan teknisi komputer lah yang perlu mengetahui setiap detil dari struktur dan fungsi DLL, tapi file-file ini begitu penting sehingga kita semua sebaiknya tahu fakta-fakta (sederhana) tentang mereka.

Ini akan membuat pre-analisis yang lebih akurat atas problem yang (sering) muncul dalam file-DLL. Saya berharap artikel sederhana ini bisa memberi sedikit tambahan informasi non-teknis bagi pengguna PC.

Definisi 
Microsoft (dan situs lainnya) memberikan beberapa definisi (teknis) yang cukup panjang tentang file-DLL ini, tapi sebagai kesimpulannya (menurut saya) adalah seperti berikut ini :

"File Dynamic Link Library (DLL) adalah file yang mengandung kode-fungsi yang dapat dipanggil dari kode-executable (.exe) lain (baik aplikasi atau DLL lain). Sebuah DLL adalah library yang berisi kode dan data (kumpulan program kecil) yang dapat digunakan oleh lebih dari satu program pada waktu yang bersamaan.
Dengan DLL, programmer memberikan kode pada suatu program, bahwa mereka (program tsb.) dapat menggunakan secara berulang dan membagi-pekerjaan yang berlainan sesuai kebutuhan program tersebut. Berbeda dengan EXE-file, file-DLL tidak dapat langsung dijalankan, file-DLL harus dipanggil dengan kode (program) lain yang sudah berjalan. "

Dengan kata lain,  bahwa file DLL adalah seperti sebuah  modul yang dapat dipasang ke program yang berbeda, setiap kali sebuah program membutuhkan fitur tertentu yang tercantum dalam DLL.

Sebagai contoh, dalam os-Windows, file [Comdlg32.dll] melakukan fungsi common-box yang terkait dengan dialog. Oleh karena itu, setiap program dapat menggunakan fungsi yang terkandung dalam DLL tersebut (Comdlg32.dll ), meski dalam waktu yang bersamaan, untuk meng-implementasikan suatu kotak-dialog  (Dialog Box) terbuka pada saat diperlukan.
Ini membantu penghematan pembuatan / penggunaan ulang kode, dan penggunaan memori yang lebih efisien.


Konsep 

Konsep asli di balik file DLL adalah untuk menyederhanakan suatu (program). Hal ini diakui bahwa ada banyak fungsi umum untuk berbagai perangkat lunak. Sebagai contoh, kebanyakan program perlu menciptakan antarmuka-grafis (Graphical Interface) yang muncul di layar.

Maka, daripada mesti membuat kode program sendiri untuk membuat interface itu, program yang bersangkutan akan memanggil sebuah DLL yang memuat fungsi tersebut. Idenya adalah untuk memiliki central library, di mana setiap orang (program) dapat memperoleh fungsi yang umum digunakan, atau yang diperlukan.
Ini menghemat kode program, meningkatkan kecepatan, lebih efisien, dll.  

Mereka disebut link dinamis (dynamic link) karena mereka dimanfaatkan hanya ketika sebuah program memanggil mereka, dan merekapun juga berjalan di ruang memori (memory area) tersendiri.
Lebih dari satu program dapat menggunakan fungsi DLL tertentu,  bahkan pada waktu yang sama. Sehingga struktur program (aplikasi) menjadi lebih sederhana.

Berikut adalah nama-nama library milik WIndows yang sering dan paling banyak digunakan dalam Windows API.



Modul 

Dengan menggunakan DLL, program dapat termodulasi ke dalam komponen terpisah. Sebagai contoh, sebuah program akuntansi dapat dijual dengan modul. jika modul telah diinstal, Setiap modul dapat diload ke dalam program utama saat dijalankan. Karena modul terpisah, waktu buka program lebih cepat, dan modul hanya diambil ketika fungsinya diminta.

Selain itu, update lebih mudah diterapkan pada tiap modul tanpa mempengaruhi bagian lain dari program.
Juga, DLL memungkinkan sebuah program berkomunikasi dengan perangkat (device) tertentu seperti printer, atau mungkin berisi kode (source code) untuk melakukan fungsi tertentu.

Sepertinya saat ini para pengembang perangkat lunak (setidaknya, Microsoft) telah “menyimpang”  dari jalur kesederhanaan ini. Saat ini komputer mungkin mengandung seribu atau lebih file DLL yang berbeda.
Selain itu, Microsoft tampaknya tak henti-hentinya bermain dengan file DLL, sehingga menimbulkan banyak versi yang berbeda dari sebuah file dengan nama yang sama, tetapi tidak kompatibel (cenderung konflik), kasusnya sama dengan WinSXS --. Microsoft memiliki sebuah database berisi informasi tentang berbagai DLL, untuk mengatasi konflik-versi yang timbul.


Pentingnya file .dll

Ada file- DLL yang sangat penting, yang mengandung sejumlah besar fungsi dasar Windows. Karena begitu pentingnya dalam Windows, maka layak dicatat nama-nama mereka.
COMDLG32.DLL
Berisi pengendali kotak dialog (dialog-box).
GDI32.DLL 
Berisi banyak fungsi untuk menggambar citra grafis, menampilkan teks, dan mengelola font.
Kernel32.dll 
Berisi ratusan fungsi untuk pengelolaan memori dan berbagai proses.
User32.dll 
Berisi berbagai fungsi antarmuka pengguna (user interface). Terlibat dalam pembentukan jendela (window) program dan interaksi mereka (user dan program) satu sama lain.

Sebuah file DLL ditunjukkan / ditandai dengan ekstensi DLL dibelakang namanya. Tetapi ada juga file yang tidak berekstensi DLL, namun memiliki fungsi sebagai sebuah DLL, yaitu :
file ber-ekstensi OCX : merupakan library ActiveX Control, dan file ber-ekstensi DRV : merupakan library Driver System.

Kedua file-DLL diatas adalah jenis common yang digunakan oleh sebagian besar program, yang akan memastikan bahwa semua aplikasi yang ditulis untuk Windows akan memiliki penampilan dan perilaku yang standar (Microsoft). Standarisasi ini adalah faktor besar dalam kebangkitan dominasi (monopoli?) Windows untuk komputer / pc.
Siapa pun yang mengalami bekerja dengan komputer pada zaman DOS akan ingat, bahwa setiap program (waktu itu) dapat memiliki antarmuka (interface) dan menu sendiri.


Pesan error yang melibatkan DLL



Pengguna PC sering melihat ada suatu file DLL (terutama yang disebutkan di atas) disebut dalam error messages box. Karena nya, orang mungkin menduga, ada sesuatu yang tidak beres dengan DLL. Sangat sering, bagaimanapun, bukan hanya DLL sendiri yang bermasalah.

File-DLL  akan muncul dalam pesan error, ketika sesuatu dalam sistem berjalan tidak benar; karena mereka (DLL) terlibat dalam proses yang paling mendasar dari Windows. Mereka berlaku sebagai pembawa error-messages ketika terjadi masalah, jadi belum tentu mereka yang menjadi masalah sebenarnya.

Tetapi disini kita tidak untuk mendiskusikan rincian error message, sebab diperlukan referensi yang substansial untuk meng interpretasikan nya. Kalau anda berminat, bisa melihatnya disalah satu situs yang ada seperti situs James Eshelman's, dan situs Windows File System yang lain.


Registrasi DLL

Pertama, harus diperjelas bahwa file-sistem penting : regsvr.exe  BERBEDA dengan file  regsrv.exe  yang digunakan oleh worm tertentu dan Trojan.

Agar sebuah file-DLL dapat digunakan, maka harus ter-register dengan memiliki referensi yang tepat didalam Registry. Kadang terjadi bahwa referensi nya rusak, maka fungsi DLL tidak dapat diakses / digunakan lagi. DLL dapat di register kembali dengan membuka Start-Run dan memasukkan perintah : regsvr32[somefile.dll]
Perintah ini di-asumsikan bahwa  [somefile.dll]  sudah berada (ditempatkan) dalam direktori atau folder-path yang tepat (semestinya).

Jika tidak, maka path untuk DLL tersebut harus dimasukkan dalam command-line. Sebuah file DLL juga dapat didaftar kan dengan menggunakan tombol "/ u" seperti berikut ini : regsvr32 / u somefile.dll  Perintah ini dapat digunakan untuk meng-aktifkan layanan (Servicess), atau mematikan layanan.


Kerusakan pada file DLL

Kerusakan referensi registry
Sering terjadi bahwa suatu saat Error messeges box muncul dan memberitahu bahwa suatu file DLL Not Found (hilang), cobalah untuk melacak secara manual keberadaan file tersebut, apabila ternyata file masih ada, dan file name serta size nya tidak berubah, maka kemungkinan terbesar adalah file DLL tersebut  mengalami kerusakan pada referensi-registrynya. Solusinya Re-register (daftar ulang) file tsb. dengan cara diatas.

Kalau masih juga error, ganti file tsb dengan cara menyalin dari computer lain, ini terjadi bila file tersebut mengalami corrupt. Jadi jangan buru-buru melakukan install ulang Windows, sayang kan kehilangan berbagai setting-an sebelumnya (browser, downloader, koneksi-internet  dll) yang sudah dilakukan dengan susah payah.

Infeksi malware
Tak ada satupun file dalam windows yang tidak mungkin terserang malware, kehebatan para Vxer (pembuat virus) semakin hari semakin bertambah. Infeksi malware terhadap file registry, relatif lebih mudah diatasi dibanding terinfeksinya sebuah file DLL. Untuk menemukan lokasi infeksi pun amat sulit, apa lagi memperbaiki file DLL yang rusak, rasanya tidak mungkin dilakukan. Ini berbeda dengan kasus pada registry.

Banyak malware yang bisa disebut sebagai perusak file DLL ini, meski sebenarnya kerusakan pada file DLL nya tidaklah parah, tetapi akibatnya benar-benar fatal. Sebagai contoh, Trojan jenis Backdoor (G6) merubah file avmeter32.dll menjadi avmeter23.dll, ada juga WormVB yang merubah file rundll32 menjadi rund1132, file msvbvm60 menjadi m5vbvm60.
Kerusakan yang timbul mirip dengan ulah Trojan G3 terhadap EXE-file, contoh : winlogon.exe menjadi winlocon.exe, regedit.exe menjadi regedif, msidll menjadi msidli, msconfig menjadi mscomfig.
Masih banyak contoh kerusakan yang berkesan “lucu” tapi sungguh bikin kepala puyeng.   Bagaimana tidak ?

Ketika error-box muncul dengan pemberitahuan bahwa file rundll32 NOT FOUND, maka User yg “cerdik” akan melacak secara manual file tersebut, hasilnya ternyata masih “ada”, ukuran filenya juga tidak berubah, bagaimana bisa NotFound ? Tak sadar bahwa kita telah dikelabui, kita menganggap rundll32 masih ada, padahal yang ada adalah rund1132.

0 komentar:

Posting Komentar

 
Toggle Footer