this post was submitted on 21 Jul 2023
916 points (100.0% liked)
Technology
37805 readers
95 users here now
A nice place to discuss rumors, happenings, innovations, and challenges in the technology sphere. We also welcome discussions on the intersections of technology and society. If it’s technological news or discussion of technology, it probably belongs here.
Remember the overriding ethos on Beehaw: Be(e) Nice. Each user you encounter here is a person, and should be treated with kindness (even if they’re wrong, or use a Linux distro you don’t like). Personal attacks will not be tolerated.
Subcommunities on Beehaw:
This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Look, I hate this proposal from Google as much as anyone else here, but let's stick to the facts.
The "assembly" is just a reference to machine instructions, a.k.a "assembly language".
Minified javascript, on the other hand, is made with the express purpose of obfuscation and as well, minimize load times, but mainly obfuscation in practice.
That's to say, you don't need webassembly to make it hard to reverse engineer. At least webassembly is a standard.
First, there were machine instruction, then people invented handy mnemonics for those and called "assembly language". Then there was C, then C++ (let's skip the basic, pascal, etc) and those weren't meant to be hard to analyze, they were and still are meant to be close to the machine, to be fast. Webassembly has similar goals. They can be relatively easily decompiled, just as much as webassembly I'm sure, unless they are purposefully obfuscated.
Just like native machine code and javascript, it can be decompiled/reverse engineered, and also obfuscated, but that's not its goal, not as stated nor in practice.
You went a bit too far back, I was talking about compiled languages intended for the web.
There is nothing easy sbout decompiling native code, even before we start with jumps into the middle of instructions and polymorphic code. Reverse engineering obfuscated JavaScript is orders of magnitude easier than that, and most minified JavaScript isn't even obfuscated.
The only saving grace for Webassembly is that it requires keeping stuff in blocks, with if, then, else, etc. reasonably delimited, and (I think) it doesn't allow too many shenanigans with indirect calls. But stuff like
br_table
, doesn't make me particularly eager to tackle decoding what someone meant.