V8 developers introduced a decompiler for WebAssembly

A V8 JavaScript-motor fejlesztői bemutatták segédprogramot wasm-decompile, amely lehetővé teszi a köztes bináris reprezentáció dekompilálását WebAssembly-t, olvasmányos, JavaScript-re és C-re hasonlító álnyelvre. Az ajánlott álnyelv lényegesen egyszerűbben érthető és alkalmasabb a manuális elemzésre, mint a WebAssembly szöveges megjelenítése a «.wat» formátumban, amely közelebb áll az assemblerhez, mint a magas szintű nyelvekhez. A dekompilálás a lehetőségek szerint teljes mértékben tükrözi a Wasm reprezentációját.

Dekompilátor bekapcsolva a WABT eszközcsomag részeként WABT, amely biztosítja a WebAssembly bináris és szöveges reprezentációi közötti fordítást, valamint a wasm-fájlok elemzését, feldolgozását, módosítását és ellenőrzését. A WABT keretein belül fejlesztés alatt áll egy wasm2c, amely lehetővé teszi a wasm fájlok C nyelvű egyenértékű kódra való dekompilálását, amelyet C fordítóval lehet fordítani, de olvashatóság szempontjából alig különbözik a «wat» szöveges reprezentációtól.

Például a wasm-be fordított C forrásfunkció

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

a wasm-decompile utilitás által az álnyelvre dekompilálva a következőképpen fog kinézni

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
}

míg a szöveges «.wat» formátumba való átalakítás a következőképpen fog kinézni

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

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster