2025-11-08 17:58:40 -07:00
|
|
|
#![feature(proc_macro_quote)]
|
2025-11-09 12:34:52 -07:00
|
|
|
#![feature(proc_macro_span)]
|
2026-02-20 15:47:58 -07:00
|
|
|
#![allow(dead_code, unused_macros, unused_imports)]
|
2025-11-08 17:58:40 -07:00
|
|
|
|
2026-02-20 14:54:12 -07:00
|
|
|
mod env;
|
2025-11-09 12:34:52 -07:00
|
|
|
mod format_helper;
|
2026-02-20 15:47:58 -07:00
|
|
|
mod proc_impl_switcher;
|
2026-02-08 12:56:52 -07:00
|
|
|
|
2025-12-13 16:49:32 -07:00
|
|
|
mod obfuscate;
|
2025-11-13 11:52:01 -07:00
|
|
|
|
2026-02-20 15:47:58 -07:00
|
|
|
// Types of symbolic reference
|
|
|
|
|
mod symbolic_aes;
|
|
|
|
|
mod symbolic_ref;
|
|
|
|
|
|
|
|
|
|
use proc_macro::TokenStream;
|
|
|
|
|
use quote::quote;
|
2025-12-13 16:49:32 -07:00
|
|
|
|
2026-02-20 15:47:58 -07:00
|
|
|
use proc_impl_switcher::proc_impl;
|
2025-11-08 17:58:40 -07:00
|
|
|
|
|
|
|
|
#[proc_macro]
|
2025-12-13 16:49:32 -07:00
|
|
|
pub fn obs(input: TokenStream) -> TokenStream {
|
2026-02-20 15:47:58 -07:00
|
|
|
proc_impl::xor(input)
|
2025-11-08 17:58:40 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[proc_macro_attribute]
|
2026-02-20 15:47:58 -07:00
|
|
|
pub fn sym_fn(_attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
|
|
proc_impl::sym_fn(item)
|
2025-11-08 17:58:40 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[proc_macro]
|
2026-02-20 15:47:58 -07:00
|
|
|
pub fn sym(input: TokenStream) -> TokenStream {
|
|
|
|
|
proc_impl::sym(input)
|
2025-11-08 17:58:40 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[proc_macro]
|
2025-12-13 16:49:32 -07:00
|
|
|
pub fn junk_asm(input: TokenStream) -> TokenStream {
|
2026-02-20 15:47:58 -07:00
|
|
|
proc_impl::junk_asm(input)
|
2025-11-08 17:58:40 -07:00
|
|
|
}
|
2025-11-09 12:34:52 -07:00
|
|
|
|
|
|
|
|
#[proc_macro]
|
|
|
|
|
pub fn file_symbol(_input: TokenStream) -> TokenStream {
|
|
|
|
|
// Get the call site span to extract file information
|
|
|
|
|
let span = proc_macro::Span::call_site();
|
|
|
|
|
let source_file = span.source();
|
|
|
|
|
let file_path = source_file.file();
|
|
|
|
|
let line_num = source_file.line();
|
|
|
|
|
let concatted = format!("{}:{}", file_path, line_num);
|
|
|
|
|
|
|
|
|
|
// Return as a string literal
|
|
|
|
|
let output = quote! {
|
2026-03-04 09:30:27 -07:00
|
|
|
obfuscate::sym!(#concatted)
|
2025-11-09 12:34:52 -07:00
|
|
|
};
|
|
|
|
|
output.into()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[proc_macro]
|
2026-02-20 15:47:58 -07:00
|
|
|
pub fn sym_format(input: TokenStream) -> TokenStream {
|
|
|
|
|
format_helper::sym_format(input)
|
2025-11-09 12:34:52 -07:00
|
|
|
}
|