Introduction
This release is specifically meant for
Expression parser with a version number of >= 1x7, as that is the only version able to parse binary files. This is a command line utility used to compile expression parser source files, it doesn't really obfuscate anything, I won't go into detail on how it's done. (If you're actually interested in how the method works, feel free to reverse engineer the binary).
Usage
Code:
epcc [-z <byte>] [-y <byte>] [-x <byte>] [-p <byte>] -o <string> -i
<string> -r <string> [--] [--version] [-h]
Where:
-z <byte>, --channel-z <byte>
obfuscation channel on plane z
-y <byte>, --channel-y <byte>
obfuscation channel on plane y
-x <byte>, --channel-x <byte>
obfuscation channel on plane x
-p <byte>, --obfuscation-level <byte>
obfuscation level or key
-o <string>, --output <string>
(required) output filename (extension is overwritten to *.oep)
-i <string>, --input <string>
(required) input file path (without relative)
-r <string>, --relative <string>
(required) relative path
--, --ignore_rest
Ignores the rest of the labeled arguments following this flag.
--version
Displays version information and exits.
-h, --help
Displays usage information and exits.
Yamiez EP Compiler
Example:
I have the two following source files of ep:
ep.ep
Code:
import "ep2.ep";
auto test = myGroup( 10, 25 );
test->set_y( 9 );
test->set_y( 200 );
test->x = 25;
cout << "myGroup( " << test->get_x( ) << ", " << test->get_y( ) << " )" << endl;
ep2.ep
Code:
import ios;
import bo;
import vector;
auto vec = vector();
vec->emplace_back( "Hello " );
vec->emplace_back( "World" );
auto beg = vec->begin();
auto end = vec->end();
while( beg < end )
{
cout << beg->access( );
beg->increment();
}
cout << endl;
group myGroup
{
members:
public var x;
private var &y;
methods:
myGroup( &x, &y )
{
this->x = x;
this->y = y;
};
method get_x( ) { return x; };
method set_x( &x ) { this->x = x; };
method get_y( ) { return y; };
method set_y( &y )
{
if ( y > x )
return 0;
this->y = y;
};
};
I run epcc with the following arguments (assuming that ep.ep and ep2.ep are located at C:/ep.ep and C:/ep2.ep):
Code:
epcc -i ep.ep -o output -r "C:/"
It generates the output file at C:/output.oep (because we specified the -o or output flag as "output")
You can then parse and run the oep file with ep::module::eval_file, example output of the above example:
@
Hunter or @
Hugo Boss
Sincerely,
Yamiez