use jobfuscator::{JObfuscator, JObfuscatorResponse};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut my_jobfuscator = JObfuscator::new(Some("ABCD-ABCD-ABCD-ABCD".to_string()));
my_jobfuscator.enable_compression = true;
my_jobfuscator.mix_code_flow = true;
my_jobfuscator.rename_variables = true;
my_jobfuscator.rename_methods = true;
my_jobfuscator.shuffle_methods = true;
my_jobfuscator.ints_math_crypt = true;
my_jobfuscator.crypt_strings = true;
my_jobfuscator.string_split = true;
my_jobfuscator.ints_to_arrays = true;
my_jobfuscator.dbls_to_arrays = true;
my_jobfuscator.dbls_math_crypt = true;
my_jobfuscator.string_char_vault = true;
my_jobfuscator.ints_from_double_math = true;
my_jobfuscator.opaque_mixer_chain = true;
my_jobfuscator.complexify_booleans = true;
my_jobfuscator.try_finally_noise = true;
my_jobfuscator.array_int_crypt = true;
my_jobfuscator.array_char_crypt = true;
my_jobfuscator.array_double_crypt = true;
my_jobfuscator.array_string_crypt = true;
let source_code = r#"import java.util.*;
import java.lang.*;
import java.io.*;
//
// you must include custom annotation
// to enable entire class or a single
// method obfuscation
//
@Obfuscate
class Ideone
{
//@Obfuscate
public static double calculateSD(double numArray[])
{
double sum = 0.0, standardDeviation = 0.0;
int length = numArray.length;
for(double num : numArray) {
sum += num;
}
double mean = sum/length;
for(double num: numArray) {
standardDeviation += Math.pow(num - mean, 2);
}
return Math.sqrt(standardDeviation/length);
}
//
// selective obfuscation strategies
// can be applied for the entire
// class or a single method (by
// default all obfuscation strategies
// are enabled when you use @Obfuscate
// annotation alone)
//
//@Obfuscate(
// array_int_crypt = true,
// array_char_crypt = true,
// array_double_crypt = true,
// array_string_crypt = true,
// crypt_strings = true,
// string_split = true,
// rename_methods = false,
// rename_variables = true,
// shuffle_methods = true,
// ints_math_crypt = true,
// dbls_math_crypt = true,
// mix_code_flow = true,
// string_char_vault = true,
// ints_from_double_math = true,
// opaque_mixer_chain = true,
// complexify_booleans = true,
// try_finally_noise = true,
// ints_to_arrays = true,
// dbls_to_arrays = true
// )
public static void main(String[] args) {
double[] numArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
double SD = calculateSD(numArray);
System.out.format("Standard Deviation = %.6f", SD);
}
}"#;
let result = my_jobfuscator
.obfuscate_java_source(source_code, true)
.await;
match result {
Some(JObfuscatorResponse::Object(obj)) => {
if obj.error == JObfuscator::ERROR_SUCCESS {
println!("{}", obj.output.unwrap_or_default());
} else {
return Err(
format!("An error occurred, error code: {}", obj.error).into(),
);
}
}
Some(JObfuscatorResponse::Json(_)) => {}
None => {
return Err("Something unexpected happen while trying to obfuscate the code.".into());
}
}
Ok(())
}