Zhvilluesit e V8 prezantuan një dekompilues për WebAssembly

Zhvilluesit e motorit JavaScript V8 prezantuan njĂ« utilitar wasm-decompile, qĂ« lejon dekodimin e pĂ«rfaqĂ«simit tĂ« ndĂ«rmjetĂ«m binar WebAssembly nĂ« njĂ« gjuhĂ« pseudo tĂ« lexueshme, e cila i ngjan JavaScript dhe C. Gjuha e propozuar Ă«shtĂ« thelbĂ«sisht mĂ« e thjeshtĂ« pĂ«r t'u kuptuar dhe mĂ« e pĂ«rshtatshme pĂ«r analizĂ«n manuale sesa pĂ«rfaqĂ«simi tekstual i WebAssembly nĂ« formatin “.wat”, i cili Ă«shtĂ« mĂ« afĂ«r assemblerit sesa gjuhĂ«ve tĂ« larta. MegjithatĂ«, dekodimi, pĂ«r sa kohĂ« qĂ« Ă«shtĂ« e mundur, reflekton plotĂ«sisht pĂ«rfaqĂ«simin e Wasm.

Dekompilator Ă«shtĂ« aktivizuar nĂ« setin e mjeteve WABT, i cili siguron pĂ«rkthimin midis pĂ«rfaqĂ«simeve binar dhe tekstual tĂ« WebAssembly, si dhe analizimin, pĂ«rpunimin, modifikimin dhe verifikimin e skedarĂ«ve wasm. NĂ« kuadĂ«r tĂ« WABT gjithashtu zhvillohet utilitari wasm2c, qĂ« lejon dekodimin e skedarĂ«ve wasm nĂ« kodin ekuivalent nĂ« gjuhĂ«n C, i cili mund tĂ« kompilohet nga njĂ« kompilator C, por nĂ« aspektin e lexueshmĂ«risĂ« nuk ndryshon shumĂ« nga pĂ«rfaqĂ«simi tekstual “wat”.

Për shembull, funksioni i origjinës C i kompiliuar në wasm

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

float dot(const vec3 *a, const vec3 *b) {
return a. * b. +
a. * b. +
a. * b.;
}

do të dekoduar nga mjeti wasm-decompile në gjuhën pseudo

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
}

ndĂ«rsa konvertimi nĂ« formatin tekstual “.wat” do tĂ« duket si mĂ« poshtĂ«

(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))))))

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster