From aac4965a4e9e5a9fa4b81c2cdf86e3c837ce7e40 Mon Sep 17 00:00:00 2001 From: maitrecraft1234 Date: Sun, 13 Oct 2024 00:03:25 +0200 Subject: [PATCH] hopefully feature completed --- src/main.rs | 10 +++++----- src/obfuscator/functions.rs | 10 ++++++---- src/obfuscator/init.rs | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index ec6f61e..b5a5170 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,9 +29,6 @@ fn run_obfuscator(mut obfuscator: Obfuscator, matches: ArgMatches) -> obfuscator if run_all || set_options.contains(&&"string".to_string()) { obfuscator.obfuscate_strings()?; } - if run_all || set_options.contains(&&"call".to_string()) { - obfuscator.obfuscate_function_calls()?; - } if run_all || set_options.contains(&&"fn".to_string()) { if set_options.contains(&&"call".to_string()) { eprintln!("fn identifier obfuscation was skipped because it is not compatible with call obfuscation"); @@ -39,6 +36,9 @@ fn run_obfuscator(mut obfuscator: Obfuscator, matches: ArgMatches) -> obfuscator obfuscator.obfuscate_functions()?; } } + if set_options.contains(&&"call".to_string()) { + obfuscator.obfuscate_function_calls()?; + } if run_all || set_options.contains(&&"int".to_string()) { obfuscator.obfuscate_integers()?; } @@ -54,13 +54,13 @@ fn run_obfuscation(code: String, matches: ArgMatches) -> ExitCode { let obfuscator = match Obfuscator::new(code) { Ok(ob) => ob, Err(err) => { - println!("{err}"); + eprintln!("{err}"); return ExitCode::SUCCESS; } }; if let Err(err) = run_obfuscator(obfuscator, matches) { - println!("{err}"); + eprintln!("{err}"); ExitCode::FAILURE } else { ExitCode::SUCCESS diff --git a/src/obfuscator/functions.rs b/src/obfuscator/functions.rs index 48bc029..6fd147d 100644 --- a/src/obfuscator/functions.rs +++ b/src/obfuscator/functions.rs @@ -109,9 +109,9 @@ impl Obfuscator { pub fn obfuscate_function_calls(&mut self) -> Result<()> { let mut shift = 0; - let calls = get_fn_calls(&self.tree); - 'outer: for (i, call) in calls.iter().enumerate() { - for cn in calls.iter().take(i) { + let calls = get_fn_calls(&self.tree).into_iter().skip(7); + 'outer: for (i, call) in calls.clone().enumerate() { + for cn in calls.clone().take(i) { if cn.end > call.start { continue 'outer; } @@ -123,7 +123,9 @@ impl Obfuscator { shift += hidden.len() as i32 - len as i32; self.code.replace_range(call, &hidden); - self.reparse(ObfuscatorError::Functions("call replace lead to syntactical error".to_string()))?; + self.reparse(ObfuscatorError::Functions( + "call replace lead to syntactical error".to_string(), + ))?; } Ok(()) } diff --git a/src/obfuscator/init.rs b/src/obfuscator/init.rs index 7a42063..48f8210 100644 --- a/src/obfuscator/init.rs +++ b/src/obfuscator/init.rs @@ -10,7 +10,7 @@ def ohe_string_decode(string): for i in range(len(string)): if ord(string[i]) >= 35 and ord(string[i]) <= 125 and 0: string[i] = chr(ord(string[i]) - 1) - return ''.join(string) + return "".join(string) def ohe_call_function(function_call_string): ohe = lambda: eval(function_call_string, globals(), locals()) try: