Theodosius v3.0
Jit linker, symbol mapper, and obfuscator
Data Structures
Here are the data structures with brief descriptions:
[detail level 1234]
 NtheoThe outer most encompassing namespace of this project.
 Ndecompthe namespace that contains all of the decomposition related code.
 Cdecomp_tthe main decomposition class which is responsible for breaking down lib file into coff files, and extracted used symbols from the coff files.
 Croutine_tthe routine class which is responsible for creating symbols for routines. if the routine is located inside a section with the name ".split" it will break functions into instruction symbols.
 Csymbol_tsymbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol. symbols can be different things, sections, functions, and even instructions (when functions are broken down)
 Nobfthis is the main namespace for obfuscation related things.
 Ntransformthis namespace encompasses the code for transforming relocations.
 Cadd_op_t
 Coperation_toperation_t is the base class for all types of transformations. classes that inherit this class are singleton and simply call the super constructor (operation_t::operation_t).
 Crol_op_t
 Cror_op_t
 Csub_op_t
 Cxor_op_t
 Cengine_tsingleton obfuscation engine class. this class is responsible for keeping track of the registered passes and the order in which to execute them.
 Chello_world_pass_thello world pass example of how to inherit pass_t.
 Cjcc_rewrite_pass_tjcc rewrite pass which rewrites rip relative jcc's so that they are position independent
 Cnext_inst_pass_tThis pass is used to generate transformations and jmp code to change RIP to the next instruction
 Cpass_tthe pass_t class is a base clase for all passes made. you must override the pass_t::run virtual function and declare the logic of your pass there
 Creloc_transform_pass_tthis pass is like the next_inst_pass, however, relocations are encrypted with transformations instead of the address of the next instruction. this pass only runs at the instruction level and appends transformations into the reloc_t object of the instruction symbol
 Nrecompthis namespace encompasses all recomposition related code.
 Crecomp_tthe main class responsible for recomposition
 Creloc_tmeta data about a relocation for a symbol
 Csymbol_table_tthis class is a high level wrapper for a hashmap that contains decomp::symbol_t values. the symbol values are references by a hashcode.
 Ctheo_tthe main class which encapsulates a symbol table, decomp, and recomp objects. This class is a bridge that connects all three: decomp, obf, recomp