-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support WebAssembly #202
Comments
It's compiled as asm and zipped as .unityweb. |
I've been working on a wasm decompiler a while ago and I may make my own global-metadata reader at some point. Once I've got something that works, I'll post a link to it here. I'd submit a PR for this project but the source is an absolute mess... |
That's interesting. No popular decompiler tools can even recognise wasm Btw, a guy shared his own .unityweb extractor tool after I reported issue regarding .unityweb support for UABE |
nice! is it possible to get any code information from the dumped files? (global-metadata and .unity3d files)? I can open it in UABE but there does not seem to be any useful files that i could use with il2cppdumper for example. |
exactly how viable is WASM decompilation? i know a pure disassembly SHOULD go off well, short of the devs using obfuscation/encryption, because web assembly is still fairly high-level and you can't have what happens in say, x86, where data/code get intermingled and attempts to decompile result in garbage code and data which is actually code, etc... [and guessing exactly where/what locals/params are since they can be in the stack, or the heap, or be on the heap with a pointer on the stack. if you're really lucky, REGISTERS] but, WASM technically doesn't need the names table and does behave more like a native CPU. so say you had a function that does something to an image structure/object, and the module doesn't have its names table, wouldn't that cause a LOT of problems? or is it ALSO possible to aide this process using the type tree, similar to how UABE already can display the raw data of any asset/component in a file because the type tree describes the format of these objects? |
You can try my decompiler for yourself here. It basically converts the wasm to basic pseudo-c without applying any transformations to it, auto-generating names for functions that are not im/exported. In the future I'll look into how the metadata.dat file works and integrate that to produce output with more names. I also have to do some work to convert wasm's block-based control flow to a proper control flow graph to get better C-like control flow structs (eg. switch cases). I haven't worked on it for a while now since I'm working on other projects too. |
i'll have to take a look at that later |
Recently, I started to research WebAssembly, and have completed most of the content of WebAssembly. Now I just need to think about how to automatically search the pointer. |
The auto search part has been completed temporarily. But some of the problems, such as the range of bss needed for searching, is the value of the STATICTOP variable initialized in js. It may be possible to directly specify a very large value, but I have not tested more examples. Or maybe consider another search method. But for the time being, I will not continue to research WebAssembly. |
Related issue #162
The text was updated successfully, but these errors were encountered: