diff --git a/include/obf/pass.hpp b/include/obf/pass.hpp index 24fdd41..0c9088f 100644 --- a/include/obf/pass.hpp +++ b/include/obf/pass.hpp @@ -63,11 +63,53 @@ class pass_t { explicit pass_t(decomp::sym_type_t sym_type) : m_sym_type(sym_type){}; /// - /// virtual method which must be implimented by the pass that inherits this - /// class. + /// This virtual method is invoked before the recomp stage of Theodosius. This + /// allows you to manipulate symbols in a generic manner. /// /// a symbol of the same type of m_sym_type. - virtual void run(decomp::symbol_t* sym) = 0; + virtual void pre_recomp_pass(decomp::symbol_t* sym) = 0; + + /// + /// This virtual method is invoked prior to calling the "allocator". This + /// allows you to manipulate the symbol prior to memory being allocated for + /// it. + /// + /// The symbol that memory is being allocated for. + /// The size of the symbol that memory is being allocated + /// for. + /// returns the size of the symbol. + virtual std::uint32_t pre_allocation_pass(decomp::symbol_t* sym, + std::uint32_t size) = 0; + + /// + /// This virtual method is invoked after the call to the "allocator". This + /// allows you to manipulate the symbol after memory has been allocated for + /// it. + /// + /// Allocation address (can be linear virtual address or + /// file offset address) + /// The symbol for which allocation was made for. + /// Size of the allocation. + virtual void post_allocation_pass(decomp::symbol_t* sym, + std::uintptr_t dest, + std::uint32_t size) = 0; + + /// + /// This virtual method is invoked prior to calling the "copier". This allows + /// you to manipulate the symbol prior to it being copied into memory. + /// + /// Symbol being copied into memory... + /// Memory destination of the copy... + /// + /// + virtual std::uintptr_t pre_copier_pass(decomp::symbol_t* sym, + std::uintptr_t dest, + std::uint32_t size) = 0; + + virtual void post_copier_pass() = 0; + + virtual void pre_resolver_pass() = 0; + virtual void post_resolver_pass() = 0; /// /// gets the passes symbol type.