Panduan VBReFormer Desktop
Panduan pengguna VBReFormer Desktop: instalasi, aktivasi lisensi, tujuh tampilan, analisis file biner, ekspor proyek VB6 yang dapat dibuka di IDE.
Diperbarui pada 20/09/202614 bab
Aplikasi yang diinstal di komputer Windows Anda. Aplikasi ini membuka file executable Visual Basic 5 dan 6 Anda, merekonstruksi kode sumbernya, dan mengembalikan kepada Anda sebuah proyek yang dapat dibuka kembali oleh IDE VB6 – lengkap dengan seluruh perangkat kerjanya: byte, sumber daya, desainer, graf, referensi silang, dan patch biner.
Catatan tentang terjemahan. Antarmuka aplikasi desktop tersedia dalam bahasa Inggris, Prancis, dan Spanyol; tidak ada versi bahasa Indonesia. Dalam panduan ini, nama menu dan tampilan dikutip dalam bahasa Inggris sebagaimana tampil di aplikasi, dan padanan bahasa Indonesianya diberikan dalam tanda kurung pada kemunculan pertama.
1. Instalasi
VBReFormer Desktop didistribusikan sebagai installer MSI, satu untuk setiap bahasa antarmuka. Paketnya mandiri (self-contained): semua yang dibutuhkannya sudah tertanam di dalamnya; tidak ada framework yang perlu diinstal terlebih dahulu.
| persyaratan | |
|---|---|
| Sistem | Windows 10 versi 1607 atau yang lebih baru, atau Windows 11 |
| Arsitektur | x64 |
| Framework | tidak ada – paketnya mandiri |
| Koneksi | diperlukan untuk dekompilasi dan validasi lisensi |
| Bahasa antarmuka | Inggris, Prancis, Spanyol |
Windows XP, Vista, 7, dan 8 tidak didukung. Aplikasi ini bertumpu pada platform yang memerlukan setidaknya Windows 10. Jika komputer Anda lebih lama dari itu, VBReFormer Online berjalan di peramban apa pun, di sistem apa pun – itulah jalur yang direkomendasikan dalam kasus tersebut.
Di mana mesin bekerja
Aplikasinya berjalan secara lokal; rekonstruksi kodenya, bagaimanapun, berjalan di server kami. Itulah arti nama edisinya – Desktop + Cloud. Semua yang dibaca dari file – format, byte, disassembly (pembongkaran kode), sumber daya – dihitung di komputer Anda; semua yang direkonstruksi melewati layanan.
Kotak dialog Help ▸ About (Bantuan ▸ Tentang) memberi tahu Anda kapan saja versi mesin yang terhubung, versi kontrak, dan daftar capabilities served (kemampuan yang disediakan) – berguna ketika suatu fitur tidak muncul: jika fitur itu tidak ada dalam daftar tersebut, bukan antarmuka yang menolaknya.
2. Aktifkan lisensi Anda
Tanpa lisensi, aplikasi tetap terbuka dan bekerja: Anda dapat menjelajahi file biner, membaca disassembly secara utuh, byte, sumber daya, dan desainer. Yang dibuka oleh lisensi adalah rekonstruksi kode VB6 dan ekspor proyek.
Satu kursi pada satu waktu
Satu lisensi VBReFormer membuka satu stasiun kerja pada satu waktu. Jika Anda sudah menggunakannya di tempat lain, aplikasi menyatakannya dengan jelas dan menawarkan dua jalan keluar: memindahkan lisensi ke komputer ini dari akun Anda, atau menambah satu kursi.
Ini adalah penolakan yang lunak: Anda sudah membayar, tidak ada yang kurang. Pesannya dinyatakan seperti itu, bukan dengan mengembalikan kesalahan teknis.
Peramban yang terbuka di VBReFormer Online juga dihitung sebagai satu kursi: studio web dan aplikasi desktop memakai lisensi yang sama.
3. Jendela
- Buka file biner. File ▸ Open a VB6 binary (File ▸ Buka file biner VB6,
Ctrl+O). Format yang diterima adalah.exe,.dll,.ocx, dan.scr. Bilah status menampilkan analisis yang sedang berjalan, lalu nama file dan bentuk kompilasinya – kode native atau P-code. - Telusuri panel PROJECT (Proyek). Di sebelah kiri, file biner disajikan sebagaimana VB6 melihatnya: form, kelas, modul, beserta prosedur-prosedurnya. Pohonnya terisi sesuai permintaan – memperluas sebuah node berarti meminta anak-anaknya; tidak ada yang dihitung di muka, sehingga pembukaan tetap cepat bahkan pada file executable yang besar.
- Pilih sebuah prosedur. Tampilan-tampilan node tersebut muncul di sebelah kanan. Jika tidak ada tampilan yang disediakan untuk sebuah node, alasannya ditulis di layar, bukan panel kosong.
Panel bawah
| tab | kegunaannya |
|---|---|
| Output (Keluaran) | log operasi. Log ini mempertahankan bahasa yang dipakai saat setiap baris ditulis, bahkan jika Anda mengganti bahasa antarmuka – log adalah catatan, bukan tampilan. |
| Diagnostics (Diagnostik) | apa yang ditolak mesin untuk dilakukan, dan mengapa. Refleks yang harus Anda miliki begitu suatu hasil mengejutkan Anda. |
| Analyser (Penganalisis) | referensi silang: pemanggil suatu prosedur, kemunculan suatu simbol. Hasilnya dapat diklik. |
Visibilitas anggota
Setiap anggota pohon membawa visibilitasnya sebagaimana dideklarasikan file biner – (Public),
(Private), (Friend). Ini adalah kata kunci VB6: tidak diterjemahkan. Anggota yang visibilitasnya
tidak dapat dibaca tidak membawa tanda apa pun: kami tidak menulis apa yang tidak kami ketahui.
4. Tujuh tampilan
Tampilan-tampilan ini disusun dalam tiga keluarga, dan pemisahan itu memberi tahu Anda dari mana asal apa yang Anda baca. Inilah hal paling berguna untuk dipahami.
Keluarga “Code” – direkonstruksi melalui analisis
| tampilan | apa yang ditampilkan | kapan melihatnya |
|---|---|---|
| Visual Basic 6 | kode sumber yang direkonstruksi dan terstruktur | secara default – inilah yang Anda cari |
| IR | representasi perantara | untuk melihat apa yang dipahami mesin |
| Disassembly (Pembongkaran kode) | instruksi mesin x86 | untuk melihat apa yang dieksekusi prosesor |
| P-code | opcode mesin virtual VB6 | hanya untuk file biner P-code |
Menuruni daftar ini berarti bergerak menuju mesin. Jika ragu tentang suatu baris: Visual Basic 6 menyatakan maksudnya, Disassembly menyatakan faktanya.
Keluarga “Project files” – dibaca, bukan disimpulkan
Designer (.frm) (Desainer), Project (.vbp) (Proyek), dan Structure (Struktur). Tidak ada di sini yang melewati rekonstruksi kode: semuanya dibaca dari tabel-tabel di dalam file biner, dan apa yang tidak dapat dibaca ditulis dengan kata-kata yang jelas, bukan diisi sembarangan. Inilah keluarga yang paling andal dari produk ini, dan satu-satunya yang tidak bergantung pada inferensi apa pun.
Keluarga “Resources”
Lihat bab 9.
5. Apa yang disimpan kompilasi, dan apa yang dibuangnya
Bab ini menjelaskan mengapa sebagian kode Anda kembali hampir utuh dan sebagian lainnya dengan nama teknis. Aturannya sederhana:
Apa yang dibutuhkan Visual Basic pada waktu eksekusi, ditulisnya ke dalam file: VBReFormer menemukannya kembali. Apa yang tidak lagi dibutuhkannya setelah kompilasi, dibuangnya – dan tidak seorang pun dapat memulihkannya.
Yang bertahan: nama form, kelas, dan modul · nama kontrol · event handler · anggota public kelas · setiap properti antarmuka · pemanggilan ke runtime VB (635 fungsi) · API Win32 (15.680 signature) · struktur kode · string.
Yang tidak ada dalam file: komentar · nama variabel lokal · nama parameter · konstanta bernama,
yang diganti dengan nilainya · nama prosedur dalam modul .bas · indentasi asli · Option Explicit
dan Enum.
Konsekuensi praktisnya. Form Anda kembali dengan sangat terbaca. Modul
.basAnda kembali dengan benar, tetapi dengan nama teknis (proc_42C506). Fungsi Rename (Ganti nama,F2) ada untuk itu, dan ia menyebarkan nama baru ke setiap titik pemanggilan dalam proyek – lihat bab 7.
Dua contoh yang dapat diverifikasi
Kutipan di bawah ini berasal dari SETUP1.EXE, wizard instalasi yang disertakan bersama Visual Basic 6. Microsoft mendistribusikan kode sumbernya di folder yang sama – sehingga Anda dapat mengulangi perbandingan ini sendiri.
Prosedur modul .bas
Kode sumber asli, COMMON.BAS:
Sub AddDirSep(strPathName As String)
If Right(Trim(strPathName), Len(gstrSEP_URLDIR)) <> gstrSEP_URLDIR And _
Right(Trim(strPathName), Len(gstrSEP_DIR)) <> gstrSEP_DIR Then
strPathName = RTrim$(strPathName) & gstrSEP_DIR
End If
End Sub
Hasil VBReFormer:
Public Sub proc_42C506(ByRef arg_8 As String)
If ((Right(Trim(arg_8), Len("/")) <> "/") And (Right(Trim(arg_8), Len("\")) <> "\")) <> 0 Then
arg_8 = (RTrim$(arg_8) & "\")
End If
End Sub
Logika yang identik, baris demi baris. Right, Trim, Len, RTrim$ bernama; pelewatan
ByRef disimpulkan dengan benar. Sebaliknya, nama prosedur dan nama parameternya hilang, dan
konstanta muncul sebagai nilainya – kompilerlah yang menggantinya, bukan VBReFormer.
Sebuah event handler
Kode sumber asli, BEGIN.FRM:
Private Sub cmdExit_Click()
ExitSetup Me, gintRET_EXIT
End Sub
Hasil VBReFormer:
Private Sub cmdExit_Click()
Set var_18 = Me
basSetup1.proc_41CE2D var_18, var_1C
End Sub
Nama form, nama tombol, dan nama handler-nya utuh; Me dikenali; modul yang dipanggil
bernama, yang memberi tahu Anda ke mana harus pergi. Hanya prosedur yang dipanggil, yang berada
di dalam .bas, yang tetap memakai nama alamatnya.
Penanda
VBReFormer tidak pernah menebak. Nilai yang tidak dapat dipastikan ditandai, bukan dikarang – nilai yang tampak masuk akal tetapi salah adalah hasil terburuk yang dapat dihasilkan sebuah dekompiler.
| penanda | arti | yang harus dilakukan |
|---|---|---|
proc_42C506 |
prosedur yang ditunjuk dengan alamatnya | ganti namanya (F2) |
var_18, arg_8 |
variabel lokal atau parameter | baca penggunaannya, lalu ganti namanya |
vtbl_3C |
panggilan tabel virtual yang belum terselesaikan | Object Browser sering kali memberi tahu pustaka mana itu |
? |
nilai tidak dapat dipastikan | lihat tampilan Disassembly di tempat yang sama |
File yang berisi
?akan ditolak oleh IDE VB6. Penanda itu ada agar Anda yang memutuskan, bukan untuk dikompilasi ulang apa adanya.
6. Alat analisis
Di sinilah edisi desktop paling berbeda: ia menawarkan meja kerja yang lengkap, sementara studio web berkonsentrasi pada membaca, mendekompilasi, dan mengekspor.
| alat | pintasan | apa yang diberikannya |
|---|---|---|
| Analyse references (Analisis referensi) | Shift+F12 |
pemanggil suatu prosedur, kemunculan suatu simbol – hasil yang dapat diklik, dan cakupannya dinyatakan dalam angka: apa yang tidak dilihat analisis dihitung, bukan didiamkan |
| Symbol list (Daftar simbol) | Ctrl+Shift+S |
inventaris lengkap, dapat difilter menurut jenis dan lingkup – membedakan nama yang dibaca dari nama yang disintesis |
| Call graph (Graf panggilan) | Ctrl+Shift+A |
siapa memanggil apa, dalam tiga skala, dengan filter pemanggil / yang dipanggil |
| Control-flow graph (Graf alur kontrol) | Ctrl+Shift+G |
bentuk sebuah prosedur: blok, loop, sisi balik, blok yang tidak terjangkau |
| Object Browser (Peramban objek) | Ctrl+Shift+B |
“di mana ini didefinisikan?” ketika jawabannya ada di luar file biner |
| API Browser (Peramban API) | Ctrl+Shift+P |
prototipe, alias, dan catatan deklarasi Win32 |
| Cited libraries (Pustaka yang dirujuk) | Ctrl+K |
apa saja yang menjadi dependensi file biner |
| Find VB programs (Cari program VB) | Ctrl+L |
menemukan file executable VB dalam sebuah folder |
| Find (Cari) | Ctrl+Shift+F |
pencarian teks di seluruh tampilan yang disediakan |
| Bookmarks (Bookmark) | Ctrl+F2 |
tandai tempat, kembali ke sana (F8 / Shift+F8) |
| Back / forward navigation (Navigasi mundur / maju) | Alt+← Alt+→ |
seperti pada peramban |
Mengapa cakupannya dinyatakan dalam angka. Graf panggilan native melihat panggilan langsung; ia tidak melihat panggilan melalui tabel virtual maupun pointer fungsi. Alih-alih menyajikan daftar parsial seolah-olah lengkap, VBReFormer menampilkan apa yang dilewatkannya, dengan hitungan. Dengan demikian Anda tahu sejauh mana hasilnya dapat dipercaya.
7. Ganti nama
Inilah tindakan utama saat bekerja pada file biner: dekompiler mengembalikan logikanya kepada Anda,
Anda mengembalikan nama-namanya. F2 pada sebuah simbol, atau dari daftar simbol.
Kotak dialognya menampilkan tiga hal yang biasanya disembunyikan dekompiler:
- asal nama saat ini – diberikan oleh Anda, disimpulkan oleh dekompiler, atau direkonstruksi;
- usulan dekompiler, masing-masing dengan prioritas dan sumber asalnya;
- nama asli, yang selalu dapat Anda kembalikan.
Penggantian nama bersifat global. Ganti nama sebuah prosedur sekali, dan titik-titik pemanggilan di modul lain ikut berubah – termasuk yang belum Anda buka.
Penggantian nama yang ditolak selalu ditolak beserta alasannya. Dua kasus yang sering terjadi: mesin tidak mengumumkan kemampuan ganti nama pada dokumen ini, atau tampilan saat ini hanya membawa fragmen leksikal – cukup untuk mewarnai teks, tidak cukup untuk menunjuk suatu entitas. Dalam kedua kasus tersebut pesannya menyatakan hal itu, bukan diam tanpa melakukan apa pun.
8. Byte dan patch biner
Navigate ▸ Show bytes (Navigasi ▸ Tampilkan byte, Ctrl+Shift+H) membuka tampilan heksadesimal
beranotasi: tampilan ini tidak hanya menunjukkan byte, tetapi juga menyatakan apa yang diwakili
setiap area. Go to address (Lompat ke alamat, Ctrl+G) membawa Anda langsung ke sana.
Memodifikasi file executable
Mode “raw” (mentah) memungkinkan Anda menulis byte dan menghasilkan file executable yang dimodifikasi. Mode ini dibingkai oleh empat penolakan, dan masing-masing melindungi sesuatu:
| penolakan | mengapa |
|---|---|
| File yang dianalisis tidak pernah menjadi tujuan | mesin tidak pernah membukanya untuk ditulis; antarmuka tidak membatalkan jaminan itu |
| Menimpa file yang sudah ada harus dikonfirmasi | “ini tidak dapat dibatalkan” |
| Tanda tangan Authenticode akan dihapus | persetujuan Anda diminta terlebih dahulu; Anda dapat menandatangani ulang dengan sertifikat Anda sendiri |
| Patch yang ditolak tidak menulis apa pun | tidak ada file yang setengah tertulis |
Studio web tidak menawarkan patch biner maupun tampilan heksadesimal: keduanya adalah fungsi khusus edisi desktop.
9. Sumber daya dan desainer
Sumber daya file biner
Ikon, kursor, bitmap, tabel string, informasi versi: semua yang akan dibawa sebuah file .res.
Setiap entri menampilkan jenisnya, ukurannya, dan apa yang dapat dilakukan dengannya, dan ekstraksi
dapat dilakukan entri demi entri atau sekaligus.
Sumber daya yang tidak diketahui produk cara menggambarnya tetap terdaftar dan ditampilkan sebagai byte: tidak pernah disembunyikan. Dan jika entri-entri direktori tidak dapat diikuti, sebuah peringatan menyatakannya – dengan demikian Anda tahu daftarnya lebih pendek daripada yang dibawa file biner.
Desainer form
Permukaan form digambar sebagaimana VB6 akan menampilkannya, dari properti yang dibaca dalam file
biner, dengan urutan penggambaran yang benar. Gambar form dapat diekspor (Ctrl+I).
Properti bersifat hanya-baca: VBReFormer tahu cara membaca permukaan sebuah form, tetapi belum tahu cara menulisnya kembali ke dalam file executable yang telah dikompilasi. Lihat bab 13.
10. Ekspor proyek
- Periksa panel Diagnostics terlebih dahulu. Panel ini menyatakan apa yang tidak dapat dilakukan. Membacanya sebelum ekspor menghindarkan Anda dari mencari-cari nanti mengapa suatu elemen hilang.
- File ▸ Export the VB6 project (File ▸ Ekspor proyek VB6). Pilih folder tujuan yang kosong.
- Baca catatan ekspor. VBReFormer menulis apa yang tidak dapat dipulihkannya, dan mengapa. Beberapa informasi – referensi eksternal, opsi kompilasi, mode startup – tidak ada dalam struktur mana pun di file biner: bukan terhapus, melainkan memang tidak pernah ada di sana. Informasi itu ditandai, bukan dikarang.
- Buka
.vbpdi Visual Basic 6. Header yang diperlukan IDE (VERSION,Attribute VB_Name) sudah ditulis. Jika ada referensi yang hilang, tambahkan melalui Project ▸ References (Proyek ▸ Referensi).
Dua penolakan penulisan yang melindungi Anda. File VB6 ditulis dalam ANSI 1252. VBReFormer menolak menulis jika set karakter tersebut tidak tersedia di komputer – menulis dengan set karakter lain akan menghasilkan file yang salah secara diam-diam – atau jika ada karakter dalam kode Anda yang tidak ada di dalamnya; dalam kasus itu ia memberi tahu Anda karakter mana dan titik kodenya (code point).
11. Opsi
| pengaturan | fungsinya |
|---|---|
| Indentation width (Lebar indentasi) | hanya berlaku untuk kode yang direkonstruksi: disassembly, IR, P-code, blok desainer, dan .vbp tidak diformat oleh editor ini. |
| Code page (designer) (Halaman kode, desainer) | halaman kode yang dipakai untuk membaca caption dan teks desainer. File biner VB6 tidak mendeklarasikan halaman kodenya di mana pun – diukur pada 236 file biner. Jika label sebuah form tampil sebagai karakter yang tidak konsisten, inilah pengaturan yang perlu diubah. |
Group under With…End With (Kelompokkan di bawah With…End With) |
nonaktif secara default. Keluarannya berkualifikasi penuh (Frame1.Caption), karena kompiler menguraikan blok With dan membangunnya kembali hanya akan menjadi tebakan. Aktifkan jika Anda lebih mengutamakan keterbacaan daripada keharfiahan. |
| Syntax colouring (Pewarnaan sintaks) | satu peran, satu warna – perannya berasal dari mesin, yang menyatakan apa setiap fragmen itu. Notasi #RRGGBB; palet yang tidak valid tidak diterapkan setengah-setengah. |
| Interface language (Bahasa antarmuka) | Inggris, Prancis, Spanyol – perubahannya langsung berlaku. |
Pengaturan render dikirim bersama setiap permintaan tampilan; pengaturan ini tidak pernah disimpan sebagai status sesi. Karena itu, mengubah indentasi tidak menganalisis ulang apa pun.
12. Pintasan
| pintasan | tindakan |
|---|---|
Ctrl+O |
Buka file biner VB6 |
F2 |
Ganti nama simbol di bawah kursor |
Shift+F12 |
Analisis referensi |
Ctrl+Shift+F |
Cari dalam proyek |
Ctrl+G |
Lompat ke alamat |
Ctrl+Shift+H |
Tampilkan byte |
Ctrl+Shift+S |
Daftar simbol |
Ctrl+Shift+B |
Object Browser |
Ctrl+Shift+P |
API Browser |
Ctrl+Shift+G |
Graf alur kontrol |
Ctrl+Shift+A |
Graf panggilan |
Ctrl+K |
Pustaka yang dirujuk |
Ctrl+L |
Program VB dalam sebuah folder |
Ctrl+F2 |
Aktifkan/nonaktifkan bookmark |
F8 / Shift+F8 |
Bookmark berikutnya / sebelumnya |
Ctrl+Shift+F2 |
Daftar bookmark |
Alt+← / Alt+→ |
Navigasi mundur / maju |
Ctrl+I |
Simpan gambar form |
13. Batasan yang diketahui
Memodifikasi antarmuka file executable yang telah dikompilasi
VBReFormer membaca permukaan sebuah form dan semua propertinya – ia belum tahu cara menulisnya kembali ke dalam file executable. Mengganti sumber daya yang tertanam dan menambahkan properti tersembunyi tanpa kompilasi ulang belum tersedia. Patch biner – menulis byte pada suatu alamat – tersedia (bab 8).
Sumber daya .ctx UserControl
Tidak ada file .ctx yang ditulis saat ekspor. Jika proyek Anda berisi UserControl dengan sumber
daya yang dipersistenkan, bagian itu harus dibangun kembali.
Windows sebelum 10
Gunakan VBReFormer Online: peramban saja sudah cukup, apa pun sistemnya.
Apa yang tidak dapat dilewati dekompiler mana pun
Komentar, nama variabel lokal, konstanta bernama: semuanya tidak ada dalam file. Lihat bab 5.
14. Pertanyaan yang sering diajukan
Sebuah fungsi menu tidak merespons. Mengapa? Buka Help ▸ About dan lihat daftar capabilities served. Jika fungsi itu tidak ada di sana, bukan antarmuka yang menolak: mesin tidak menyediakannya untuk dokumen ini. Pesan-pesan aplikasi juga menyatakannya secara eksplisit.
Apakah kode yang diekspor dapat dikompilasi ulang apa adanya? Sering kali: pada kumpulan uji 149 proyek, 121 di antaranya dikompilasi ulang tanpa perubahan. Sisanya memerlukan penambahan referensi atau penanganan beberapa penanda.
Label form saya tidak terbaca. Itu soal halaman kode. File biner VB6 tidak mendeklarasikan di mana pun halaman kode teks desainernya – atur di Opsi (bab 11).
Mengapa form saya lebih terbaca daripada modul saya? Karena VB6 menyimpan nama kontrol dan event agar dapat bekerja, sedangkan prosedur modul diselesaikannya menjadi alamat polos. Lihat bab 5.
File executable saya dikemas (packed). Apakah itu masalah? Ya: kemasannya harus dibongkar (unpack) terlebih dahulu, jika tidak, struktur VB6 tidak terlihat dalam file.
Dapatkah .ocx atau .dll ActiveX didekompilasi?
Ya, dan inventaris anggota public-nya umumnya lebih kaya di sana, karena COM mengharuskan anggota
tersebut diberi nama.
Apakah file biner saya dikirim ke suatu tempat? Pembacaan format, byte, disassembly, dan sumber daya diproses di komputer Anda. Rekonstruksi kode berjalan di server kami – itulah arti edisi Desktop + Cloud.
Apakah ini legal? Itu bergantung pada yurisdiksi Anda dan pada hak Anda atas file biner tersebut. Penggunaan yang dimaksudkan adalah memulihkan kode Anda sendiri, atau kode yang haknya atau izinnya Anda miliki.
Lihat juga
Panduan VBReFormer OnlineCoba tanpa membeli