Design: Pengkodean biner wasm yang tidak dapat dibaca memiliki kelebihan

Dibuat pada 22 Apr 2017  ·  6Komentar  ·  Sumber: WebAssembly/design

Baru saja melihat proyek secara singkat hari ini dan saya sangat tertarik untuk menggunakannya dalam pekerjaan pengembangan umum.

Namun, jika hasil akhirnya berarti pengguna akhir yang menjalankan wasm di browser klien mereka dapat mengakses kode yang dapat dibaca manusia, ini adalah peluang yang terlewatkan.

Tidak ada alasan untuk menyediakan fasilitas ini kepada pengguna akhir - pengembang dapat mengaksesnya melalui file peta atau mekanisme serupa yang memerlukan sumber asli.

Meskipun tidak mungkin untuk mencegah penentuan dari dekompilasi/rekayasa balik suatu produk, pencegah apa pun berguna untuk dimiliki (jika Anda ingin memberikannya sertakan sumber / tautannya). Jika usaha/risiko dalam mencuri lebih besar daripada biaya perizinan secara legal. dll dll.

Elemen tambahan dari keamanan ip dalam tidak menyediakan keterbacaan kemungkinan akan mendorong adopsi yang lebih luas/lebih cepat (ini benar-benar tidak perlu dipikirkan lagi bagi saya).

Di sisi lain, jika tidak ada manfaat keamanan....maka dengan.mesin hw/js yang lebih cepat dari waktu ke waktu, beralih kembali ke C/C++ dan mempertahankan rangkaian keterampilan yang diperluas lebih lanjut tidak terlihat begitu menarik.

Harap pertimbangkan untuk TIDAK menyediakan mekanisme untuk membuat pengkodean biner wasm dapat dibaca. Orang lain akan melakukannya pada akhirnya - sementara itu gunakan sumber daya di tempat lain dan biarkan kami menikmati era singkat kode sisi klien yang tidak dapat dipahami.

Bob.

Komentar yang paling membantu

Melarang biner ke beberapa bentuk sumber yang dapat dibaca manusia bukanlah sesuatu yang dapat dilarang oleh WebAssembly. Siapa pun dapat mengimplementasikan hal mereka sendiri, betapapun cantik / mudah dibaca. Kelompok ini malahan memikirkan dirinya sendiri dengan menentukan format portabel, ukuran dan waktu muat yang efisien yang cocok untuk kompilasi ke web.

Kami juga prihatin dengan membuat sesuatu yang dapat digunakan, itulah sebabnya kami menentukan format teks tingkat rendah, dan kemungkinan akan bekerja pada kemampuan debugging.

Bukanlah tujuan untuk menjamin perlindungan hukum apa pun untuk atau terhadap dekompilasi, rekayasa balik, atau masalah non-teknis lainnya. Ini diserahkan kepada pengacara Anda sendiri, dan saya mendesak non-pengacara untuk menghindari spekulasi. Kami tidak ingin berada dalam bisnis memberikan nasihat hukum.

Sepertinya diskusi sebelumnya menjawab pertanyaan Anda? Saya akan tutup, jangan ragu untuk membuka kembali atau melanjutkan diskusi jika tidak.

Semua 6 komentar

Chrome versi terbaru sudah mampu mengonversi WASM biner menjadi format teks.

Apakah Anda mengatakan saya bisa pergi dari (mengikuti diambil dari entri wikipedia)

20 00
42 00
51
04 7e
42 01
05
20 00
20 00
42 01
7d
10 00
7e
0b

ke

int faktorial(int n) {
jika (n == 0)
kembali 1;
lain
kembali n * faktorial(n-1);
}

atau dikenali seperti menggunakan chrome sebagaimana adanya?

Tidak, ini mengembalikan format "WAST" yang belum ditentukan secara formal yang dijelaskan di sini: http://webassembly.org/docs/text-format/ .

get_local 0
i64.const 0
i64.eq
if i64
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end

Majelis Web dioptimalkan untuk format biner yang kecil, mudah dan cepat diurai. Itu tidak menyimpan informasi yang cukup untuk sepenuhnya memulihkan sintaks asli. Semakin besar dan kompleks fungsinya, semakin tidak dapat dikenali dekompilasinya. Ini terutama benar jika Anda melihat bagaimana struct, class, template, dan fitur tingkat tinggi lainnya ditangani.

Luar Biasa (Itulah "representasi perantara" yang tercantum dalam artikel wikipedia) - Saya pikir Anda menyarankan itu sudah bisa "dipercantik" lebih lanjut - Saya lebih suka jika tidak bisa (out-of-the-box).

Dan saya lebih suka jika semuanya dilakukan / tidak dilakukan dan dirancang untuk tetap seperti itu.

(Saya mendapat kesan ada rencana untuk akhirnya dapat menerjemahkannya kembali ke kode semu yang masuk akal meskipun tanpa pengidentifikasi yang berarti, di browser.)

Melarang biner ke beberapa bentuk sumber yang dapat dibaca manusia bukanlah sesuatu yang dapat dilarang oleh WebAssembly. Siapa pun dapat mengimplementasikan hal mereka sendiri, betapapun cantik / mudah dibaca. Kelompok ini malahan memikirkan dirinya sendiri dengan menentukan format portabel, ukuran dan waktu muat yang efisien yang cocok untuk kompilasi ke web.

Kami juga prihatin dengan membuat sesuatu yang dapat digunakan, itulah sebabnya kami menentukan format teks tingkat rendah, dan kemungkinan akan bekerja pada kemampuan debugging.

Bukanlah tujuan untuk menjamin perlindungan hukum apa pun untuk atau terhadap dekompilasi, rekayasa balik, atau masalah non-teknis lainnya. Ini diserahkan kepada pengacara Anda sendiri, dan saya mendesak non-pengacara untuk menghindari spekulasi. Kami tidak ingin berada dalam bisnis memberikan nasihat hukum.

Sepertinya diskusi sebelumnya menjawab pertanyaan Anda? Saya akan tutup, jangan ragu untuk membuka kembali atau melanjutkan diskusi jika tidak.

chintailease.wast.zip

Adakah ide tentang cara membongkar file .wast ini ke kode sumber aslinya?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat