It has been three weeks since my last post, and progress has been slow. I will be trying to write small status updates semi-regularly both to keep myself motivated and try to document the development of RustRAT.
Since last time, I have written code for running WebAssembly programs and for calling arbitrary functions from DLLs at run-time using libffi, more specifically with the libffi-rs bindings. Currently, I am working on trying to put these two parts together using a lot of ugly and unsafe Rust. The code gluing these two parts together will not be easy to read, even harder to alter, and quite possibly impossible to debug, but I am hoping to have something that works (for certain values of work) in a few weeks.
Despite what I wrote in my last post, I will be using wasm3-rs for parsing and executing WebAssembly. I do not know exactly why I was unable to use wasm3-rs during my first few attempts, but trying a few more times seemed to do the trick. While there are still many things in Rust I am not used to, I feel like I am starting to become more and more acquainted with the language.
The last week, progress halted as I had a problem with Rust doing what I told it to instead of what I wanted it to do. My next post will be about this simple, but confusing error, and how stupidly simple the fix was.