Mendiagnosis Error Runtime VM
Kode hasil obfuskasi VM Anda melempar error saat runtime - bisa jadi berupa RangeError: Invalid array length, tetapi checklist yang sama
berlaku untuk error tak terduga lain yang hanya muncul setelah obfuskasi. Kerjakan langkah-langkah berikut secara berurutan. Langkah pertama
menangkap penyebab yang jauh paling umum; sisanya mempersempit ke arah bug yang sesungguhnya.
Langkah 1 - Periksa runtime terhadap opsi target
Penyebab tunggal yang paling umum dari Invalid array length dan error serupa adalah ketidakcocokan antara opsi target dan
lingkungan tempat kode benar-benar dijalankan, dikombinasikan dengan vmSelfDefending: true.
Lingkungan yang memicu hal ini:
- Node.js (menjalankan bundel hasil obfuskasi langsung melalui
node) - Headless Chrome / Chromium, PhantomJS
- Puppeteer, Playwright, Cypress, Selenium / ChromeDriver, Nightmare
- jsdom dan emulasi DOM sisi server lainnya
- Lingkungan apa pun di mana builtin peramban native telah di-hook atau diganti
Jika runtime Anda ada dalam daftar tersebut, error tersebut adalah proteksi yang bekerja sebagaimana dirancang, bukan bug. Pilih penyelesaian yang sesuai dengan kasus Anda:
- Menjalankan di Node.js dengan sengaja (skrip sisi server, alat CLI, proses utama Electron): setel
target: 'node'saat mengobfuskasi. Lapisan self-defending akan mengkalibrasi dirinya untuk Node alih-alih peramban. - Menjalankan pengujian otomatis / E2E terhadap build hasil obfuskasi (Cypress, Playwright, Puppeteer, Selenium): buat build pengujian terpisah dengan
vmSelfDefending: false. Opsi ini dirancang untuk merusak otomasi; opsi ini tidak dapat di-whitelist untuk alat tertentu. Lihat VM Self Defending untuk daftar lengkap lingkungan yang tidak kompatibel. - Menjalankan di peramban sungguhan tetapi masih melihat error tersebut: pastikan tidak ada ekstensi, skrip devtools, atau halaman pembungkus yang meng-hook builtin native (
Array,Function.prototype,JSON, dll.). Reproduksi di profil bersih sebelum memperlakukannya sebagai bug.
Langkah 2 - Persempit ke satu fungsi
Jika Langkah 1 tidak menyelesaikannya, error tersebut ada pada bagian kode tertentu yang ditransformasi. Beralih ke
vmTargetFunctionsMode: 'comment' dan tambahkan /* javascript-obfuscator:vm */
ke satu fungsi setiap kalinya hingga error muncul kembali. Fungsi yang Anda tandai ketika error muncul kembali adalah biang keroknya -
itulah reproduksi minimal yang akan Anda kirim ke support.
Langkah 3 - Kirim laporan bug
Setelah Anda memastikan bahwa ini bukan ketidakcocokan target/self-defending dan sudah mempersempit ke sebuah fungsi, email
support@obfuscator.io. Semakin banyak hal berikut yang Anda sertakan, semakin cepat kami dapat memperbaikinya:
- Stack trace error lengkap, persis seperti yang muncul di konsol - bukan parafrase.
- Opsi obfuscator dalam bentuk JSON. Salin seluruh objek opsi yang Anda gunakan (atau nama preset ditambah setiap penimpaannya). Interaksi halus antar opsi sering terjadi, jadi kami membutuhkan set yang persis.
- Versi obfuscator - ditampilkan di pojok kanan bawah editor.
- Lingkungan - peramban + versinya, versi Node.js, OS, apa pun yang tidak biasa tentang runtime tersebut (ekstensi, polyfill, builtin kustom).
- Reproduksi minimal - idealnya fungsi tunggal dari Langkah 2, ditambah call site apa pun yang diperlukan untuk memicu error.
- Sumber asli (sebelum obfuskasi), jika memungkinkan. Keluaran hasil obfuskasi juga tidak transparan di sisi kami; tanpa masukannya, kami harus merekayasa balik bytecode kami sendiri.
