A virtualization-obfuscation (VO) protector based on the ROSE compiler infrastructure
Clone or download
Behnam Momeni
Behnam Momeni Version 1.0.0
Latest commit 50dec24 Dec 10, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Version 1.0.0 Dec 10, 2018
test Version 1.0.0 Dec 10, 2018
.gitignore Adding some test input and output programs Oct 16, 2018
LICENSE Initial commit Oct 16, 2018
README.md Version 1.0.0 Dec 10, 2018


VO Protector

A virtualization-obfuscation (VO) protector based on the ROSE compiler infrastructure which compiles given C source code to its VO protected counterpart.

How to build

First setup the ROSE environment based on this guide or download its prebuilt Ubuntu VM image (about 4.4 GB compressed file; 20.2 GB if fully uncompressed). If you are in the Sharif university network, the ROSE VM image has been cached in the local FTP repo at ftp://ftp.sharif.ir/OS/Linux/Ubuntu-ROSE-Demo-V3.tar.gz address. Assuming that $BOOST_ROOT points to the BOOST installation folder and $ROSE_SRC, $ROSE_BLD, and $ROSE_INST point to the ROSE source, build, and installation folders respectively, you can build voprotector using the following commands:

cp voprotector/src/* $ROSE_SRC/tools/
$ROSE_SRC/configure --prefix=$ROSE_INST --enable-languages=c --with-boost=$BOOST_ROOT
cd $ROSE_BLD/tools

How to VO-protect a C file

Assuming that ~/voprotector/test/input0.c file contains the input C source code, the following command puts its VO-protected counterpart in the ~/voprotector/test/input0.voprotected.c file:

./voprotector -rose:C_only -c ~/voprotector/test/input0.c -rose:o ~/voprotector/test/input0.voprotected.c

Sample files

There are a few sample input C source codes and their VO-protected counterparts in the test folder. The VO interpretor itself is placed in the voprotector/test/vo-interpreter.c file. Each VO-protected binary can be built using make command after switching to the test folder. For example make input0.voprotected.out command compiles the input0.voprotected.c and links it to the VO interpretor. To enable debug messages, uncomment the ENABLE_VO_DEBUG_MESSAGES define line at the beginning of voprotector/test/vo-interpreter.c file.


Copyright © 2018 Behnam Momeni

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see {http://www.gnu.org/licenses/}.