V8 arendajad esitlesid dekompilaatorit WebAssembly jaoks

JavaScript V8 mootorit arendajad tutvustanud utiliidi wasm-decompile, mis võimaldab vahe-binaarset esindust dekompileerida WebAssembly loetavaks pseudokeeleks, mis meenutab JavaScripti ja C-d. Pakutav pseudokeel on oluliselt lihtsam arusaadav ja sobivam käsitsi analüüsiks kui WebAssembly teksti esitus formaadis ".wat", mis on lähemal assemblerile kui kõrgetasemelistele keeltele. Samal ajal kajastab dekompileerimine võimalusel täielikult Wasmi esindust.

Dekomplilaator seal WABT tööriistade komplekti , mis tagab tõlkimise binaarse ja tekstilise WebAssembly esinduse vahel, samuti Wasm-failide analüüsi, töötlemise, muutmise ja kontrollimise. WABT-s arendatakse ka utiliitiwasm2c , mis võimaldab dekompileerida wasm-faile vastavasse C-keelesse, mida saab C-kompilaatoriga kompileerida, kuid loetavuse osas ei erine see palju "wat" tekstilisest esitlusest., позволяющая декомпилировать файлы wasm в эквивалентный код на языке Си, который может быть скомпилирован Си-компилятором, но в плане читаемости мало чем отличается от текстового представления «wat».

Näiteks, C-funktsioon, mis on kompileeritud wasm-iks

typedef struct { float x, y, z; } vec3;

float dot(const vec3 *a, const vec3 *b) {
return a->x * b->x +
a->y * b->y +
a->z * b->z;
}

dekompileeritakse utiliidiga wasm-decompile pseudokeelde

function dot(a:{ a:float, b:float, c:float },
b:{ a:float, b:float, c:float }):float {
return a.a * b.a + a.b * b.b + a.c * b.c
}

textiforma «.wat» kujutab endast järgmist

(func $dot (type 0) (param i32 i32) (result f32)
(f32.add
(f32.add
(f32.mul
(f32.load
(local.get 0))
(f32.load
(local.get 1)))
(f32.mul
(f32.load offset=4
(local.get 0))
(f32.load offset=4
(local.get 1))))
(f32.mul
(f32.load offset=8
(local.get 0))
(f32.load offset=8
(local.get 1))))))

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster