One thing that I feel is missing from the introduction: Virtual machines are also excellent for obfuscation purposes. They allow you to encrypt the actual code, the reverse enginering process gets slowed down a lot if you use a particularly obscure instruction set for which no tooling exists (or even worse: invent your own instruction set), they move code out of the executable region into the data region and can help you execute only signed VM code from a remote location after passing authentication checks.
this sounds really interesting! do you have any examples of this, or research?
Open source examples used in the real world don’t exist because that defeats the entire purpose of the obfuscation.
sorry its taken so long to see this. thanks for the reply with all of this, it was exactly what I was looking for. thank you
I absolutely love these sorts of projects/tutorials, I shall add it to my list!
Yeah, I love the save feature in lobste.rs. It’s like a secret treasure trove.
Having worked with similar software, I do support using jump tables over switch statements. Switch statements are incredibly ugly to look at and annoying to maintain