In this course, you will focus on the basics of WebAssembly and its ecosystem. You will learn how to reverse-engineer and analyze real-life modules using both the binary format and the text representation. Also, you will have the opportunity to apply much of the theory in practice over small hands-on assignments to highlight aspects of working with WebAssembly.
Assignment #1 - WebAssembly compilation
- Compile C/C++/Rust code into WebAssembly.
- Observe how Javascript interact with wasm module.
- Discover how Emscripten works and why it is useful.
Assignment #2 - WebAssembly text format and debugging
- Convert binary module into wasm text format representation.
- Debug module execution step-by-step using browsers.
- Analyze WebAssembly instructions to understand module logic.
Assignment #3 - Real-World: Browser addons analysis
- Learn how wasm module can be stored inside browser addons.
- Identify module entrypoints and architecture.
- Determine module behaviors and origins.
Assignment #4 - WebAssembly reverse engineering
- Disassemble and analyze module instructions.
- Generate functions Control and Data flow graph (CFG and DFG).
- Extract and modify wasm modules to solve challenges.