Sacara - A stack based intermediate language aimed at software protection by running in a software VM
Sacara is a programming language very similar to the most common intermediate representation language, like MSIL or the Java bytecode. It is executed inside a VM and its main purpose is to make difficult to understand the original purpose of the program. This make the project well suited for protecting the code from being reverse enginnering.
Of course nothing will stop an highly skilled reverse engineer :)
In order to compile a script implemented in the Sacara Intermediate Language (SIL), you have to use the Sacara assembler SacaraAsm.
To run a Sacara compiled script you can use the SacaraRun utility, or embedd the code inside your source code and using the exported APIs to run the SIL in a more controlled environment.
The Sacara VM is implemented in the SacaraVM dll.
Find below an example of execution:
For more examples take a look at the Examples folder.
For documentation related to how the SacaraVM can be used, please read the ISA page.
If you are interested in using Sacara in .NET take a look at this example, which use the .NET Sacara Binding (ES.SacaraVm). In order to use the .NET binding the unmanaged SacaraVm.dll file must be in the same directory as the ES.SacaraVm.dll Assembly file.
I have also published a blog post about using Sacara to hide code intent. You can read it here.
Sacara is currently developed by using VisualStudio 2017 Community Edition (be sure to have the latest version installed). To build the source code you have to:
- have installed .NET Core SDK
- have installed the Windows desktop development with c++. If you have installed Visual Studio 2017, by opening the solution (SacaraSln.sln) it should ask automatically if you want to install the missing component
- clone the repository
- Antonio Parata - Core Developer - s4tan
Sacara is licensed under the MIT license.