• Stars
    star
    122
  • Rank 292,031 (Top 6 %)
  • Language
    F#
  • License
    Other
  • Created about 6 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Sacara VM

Sacara - A stack based intermediate language aimed at software protection by running in a software VM

Release Software License

Under the Sacara name belongs various projects:

  • A programming language very similar to the most common intermediate representation language, like MSIL or the Java bytecode
  • An assembler to transalate your Sacara program in a binary format
  • An interpreter based on a Virtual Machine stack based
  • A .NET binding to use the unmanaged Sacara DLL

Sacara was created to learn how to create a project suited for protecting the code from being reverse enginnering. The Virtual Machine is implemented in Assembly x86 and contains some anti-analysis features.

Documentation

To know how to program in SacaraVM you can have a look at the ISA page, see the Examples in the source folder or read the programs (this and this) used for testing.

I have also published some blog posts about how to use Sacara for some basic tasks.

Release Download

Using Sacara

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.

Static Library

A static library (SacaraVm.lib) is available in order to avoid to bring with your program the DLL. Here an example of code using the static library.

Exported VM methods

The SacaraVM DLL exports various methods that can be invoked programmatically. You can find an example of usage in the Examples directory.

Finally, find below an example of execution:

For more examples take a look at the Examples folder.

.NET Binding

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.

Build Sacara

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
  • run build.bat

Versioning

I used SemVer for versioning. For the versions available, see the tags on this repository.

Authors

  • Antonio Parata - Core Developer - s4tan

License

Sacara is licensed under the MIT license.