Perlindungan proyek VBA di MS Excel

Halo! Saya adalah pengguna MS Excel biasa. Bukan programmer profesional, tetapi telah mengumpulkan cukup pengalaman untuk menginstal dan melewati perlindungan proyek VBA.



Penafian:



Artikel ini menjelaskan jenis perlindungan proyek VBA dari akses tidak sah. Kekuatan dan kelemahan mereka diperingkat.



Tujuan artikel ini adalah untuk menunjukkan kekuatan dan kelemahan dari setiap jenis perlindungan untuk proyek VBA di MS Office.



Demonstrasi alat yang dikembangkan, di add-on VBA Alat Makro , untuk menghapus dan menginstal satu atau beberapa perlindungan lainnya. 



Semua alat diimplementasikan menggunakan alat VBA standar, tanpa menggunakan pustaka tambahan. 





Panel Utama Add-in Alat Makro VBA



Jenis perlindungan pertama - Kata sandi biasa



Waktu untuk menghapus: secara instan



Kerugian: akses cepat ke modul VBA yang dilindungi kata sandi



Alat standar (Di VBE: panel Alat -> Properti VBAProject -> Perlindungan ). 



Perlindungan yang paling mudah dilepas. Sangat mudah menemukan kode di Internet untuk menghapus perlindungan ini. 



Perlindungan ini dapat dihilangkan dengan alat berikut:





Jenis perlindungan kedua - Project tidak dapat dilihat



Waktu untuk melepas: 10 hingga 15 menit (manual)



Kerugian: akses ke kode sumber modul VBA



Salah satu jenis perlindungan yang paling umum. Ditemukan di 95% file dengan perlindungan modul VBA. Saat Anda mencoba membuka proyek, kotak dialog terbuka dengan pesan:  Proyek Tidak Dapat Dilihat.





Sebagian besar pengguna Excel tidak dapat menghapus proteksi ini, karena memiliki banyak variasi dan nuansa; untuk menghapusnya, Anda perlu mengetahui struktur internal file Excel.



Jenis perlindungan ini didasarkan pada perubahan kunci:



CMG=«4A488FCC54D054D054D054D0»

DPB=«0B09CE0F8E108E108E»

GC=«CCCE09520B120C120CED»




di dalam file vbaProject.bin





Secara singkat bagaimana proteksi ini dibuat



Untuk membuat proteksi ini, Anda perlu mengekstrak file Excel. Buka folder xl di arsip , buka file vbaProject.bin , di akhir file adalah kunci kami, edit nilai kunci menjadi kosong, simpan file. Kami menerjemahkan arsip kami kembali ke file Excel. Selesai! 



Ini adalah versi paling sederhana dari perlindungan ini, tetapi ada banyak modifikasi.



Algoritme untuk menghapus Project perlindungan tidak dapat dilihat.



1) Unzip file eksperimen, buka file  ... \ xl \ _rels \ workbook.xml.rels









2) Pada file workbook.xml.rels kita   mencari baris yang berisi kata  vbaProject , biasanya terlihat seperti ini:  /> . Di baris ini, kami tertarik pada kunci Target , dan nilainya. Nilai adalah nama file yang berisi proyek VBA. Terkadang pelindung mengubah nilai kunci ke printerSettings.bin. Ternyata file dengan proyek VBA menyamar sebagai file lain.



3) Buka file yang ditentukan dalam kunci Target untuk diedit , cari kunci CMG, DPB, GC di file tersebut  . Dan kami mengubah huruf apa pun di namanya menjadi yang lain, misalnya: CMC, DPC, CC... Saat mencari, Anda harus berhati-hati, karena pembela HAM dapat memasukkan formulir ke dalam proyek dengan tanda tangan yang mengulangi salah satu tombol, misalnya: DPB = "0B09CE0F8E108E108E" . Saat Anda mengubahnya, proyek VBA akan dihapus dari buku kerja Excel. Kami menyimpan dan menutup file.



4) Kami mentransfer arsip kembali ke file Excel.



5) Luncurkan aplikasi Excel, lakukan hal berikut: di Pusat Kepercayaan -> Opsi Makro -> Nonaktifkan semua makro tanpa pemberitahuan . Mulai ulang Excel. Operasi ini diperlukan untuk memblokir perlindungan, yang terkadang ditetapkan oleh penulis makro. Perlindungan ini diimplementasikan sebagai berikut. Dalam modul VBA " Buku Ini”, Prosedur dibuat yang menanggapi peristiwa membuka buku atau menutup buku. Peristiwa ini biasanya memeriksa keberadaan kata sandi untuk proyek VBA, larangan menyimpan, dan sebagainya.



6) Buka file. Jika semuanya dilakukan dengan benar, maka Excel akan bersumpah pada kunci yang salah yang kita edit di paragraf 3. Klik, ya, sampai pesan ini selesai dan kotak dialog ditutup. 



      Jika pesan ini tidak muncul, berarti Anda belum mengedit file yang berisi proyek VBA.





7) Buka proyek VBA. Bagaimanapun, proyek VBA harus tersedia.



8) Tetapi terkadang perlindungan tidak dihapus, maka Anda perlu menyimpan file, periksa apakah itu benar-benar disimpan! Dan dilakukan lagi langkah 1 sampai 7. Biasanya hal ini terjadi ketika file workbook.xml.rels di key Target   set printerSettings.bin . Jika diawetkan, Excel mengoreksinya menjadi nilai di vbaProject.bin



Proteksi ini dapat menginstal dan menghapus tool berikut:





Jenis perlindungan ketiga - Modul Tersembunyi, modul VBA tersembunyi



Waktu untuk melepas: 15 hingga 20 menit (Anda memerlukan editor objek OLE, Penampil Penyimpanan Terstruktur, misalnya.



Kerugian: akses ke kode modul VBA



Jenis perlindungan yang kurang umum biasanya ditemukan dalam kombinasi dengan perlindungan Proyek Tidak terlihat. Saat proteksi ini dipasang, modul VBA tidak ditampilkan dalam proyek buku kerja Excel. Anda dapat mengetahui keberadaannya dengan menganalisis kode VBA (yang membutuhkan waktu!) atau membuka file Excel di  OpenOffice atau LibreOffice (Anda juga dapat melihat kode saat melindungi Tidak dapat dilihat, tetapi metode ini tidak memberikan kesempatan untuk mendapatkan file yang berfungsi, tanpa kata sandi). 





Lihat Kode VBA di  LibreOffice



Secara singkat bagaimana proteksi ini dibuat



Untuk membuat proteksi ini, Anda perlu mengedit file dengan proyek VBA - vbaProject.bin  atau printerSettings.bin , bergantung pada pengaturan di file ... \ xl \ _rels \ workbook.xml.rels . Di akhir file, baris seperti: Module1 = 32, 32, 635, 330, Z dihapus . Dengan nama modul yang diinginkan.





Untuk menghapus perlindungan ini, Anda perlu memulihkan catatan modul yang dihapus di file vbaProject.bin .



Perlindungan ini dapat diatur dengan alat berikut.





Jenis perlindungan keempat - Kode obfuscation



Waktu penarikan: tidak diketahui, tergantung pada ukuran kode dan penggunaan kembali bagian-bagian kode





Kode VBA yang dikaburkan



Kekurangan: kebutuhan untuk menguji file setelah obfuscation untuk pengoperasian



Jenis perlindungan yang sangat langka berdasarkan perubahan kode sumber VBA menjadi bentuk yang tidak dapat dibaca oleh manusia. Semua komentar, pemformatan kode dihapus, nama semua variabel, prosedur, fungsi, modul, dan lainnya diganti namanya. Penyerang tidak akan pernah dapat memulihkan bentuk asli kode, dan akan membutuhkan banyak waktu untuk memulihkannya ke bentuk yang dapat dibaca manusia.  



Untuk menghapus kode, Anda perlu memiliki waktu, perangkat lunak khusus.



Perlindungan ini dapat diatur dengan alat berikut.





Jenis perlindungan kelima - Kode port ke dll



Waktu untuk menghapus: tidak diketahui, tergantung pada bahasa pemrograman dan kualifikasi



Kerugian: kebutuhan akan file dll tambahan



Salah satu jenis perlindungan yang paling langka. Ide utamanya adalah mentransfer kode utama ke dll terpisah, yang ditulis dalam bahasa pemrograman lain. Jenis perlindungan ini tidak tersebar luas karena alasan berikut, kebutuhan akan file Excel, "drag" file tambahan, dll.



Untuk mendapatkan akses ke kode dll, Anda harus memiliki pengetahuan khusus.



Kesimpulan



Sebagai kesimpulan, saya ingin menyoroti ketidakgunaan perlindungan:  Project adalah Modul yang Tidak Dapat Dilihat dan Tersembunyi yang, pada dasarnya, tidak melindungi apa pun. Memungkinkan Anda untuk melihat kode VBA tanpa mengubah file sumber dalam program seperti OpenOffice  atau   LibreOffice. Jadi mereka dihapus tanpa masalah.



All Articles