Razvijalci V8 so predstavili dekompajler za WebAssembly.

Razvijalci JavaScript motorja V8 so predstavili orodje wasm-decompile, ki omogoča dekompilacijo vmesne binarne predstavitve WebAssembly v berljiv psevdokod, podoben JavaScriptu in C. Predlagani psevdokod je bistveno lažje razumljiv in bolj primeren za ročno analizo kot besedilna predstavitev WebAssembly v formatu '.wat', ki je bližje assemblerju kot visokim programskimi jeziki. Dekomplijacija se pri tem čim bolj natančno odraža v predstavitvi Wasm.

Dekomplijator vključen v sklopu orodne vrstice WABT, ki zagotavlja prevod med binarno in besedilno predstavitvijo WebAssembly ter analizo, obdelavo, modifikacijo in preverjanje wasm-datotek. V sklopu WABT se razvija tudi orodje wasm2c, ki omogoča dekompilacijo datotek wasm v ekvivalentno kodo v jeziku C, ki jo lahko skompilira C prevajalnik, vendar po berljivosti malo spominja na besedilno predstavitev 'wat'.

Na primer, skompilirana v wasm izvorna C funkcija

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;
}

bo dekompilirana z orodjem wasm-decompile v psevdokod

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
}

medtem ko bo pretvorba v besedilni format '.wat' videti takole

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

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster