53 static BOOL match_wildcard(PCCH wild_card, PCCH
string);
63 csym(
string sym_name, DWORD dll_rva, DWORD fth_rva, DWORD oth_off, DWORD name_off);
72 csym(WORD sym_ord, DWORD dll_rva, DWORD fth_rva, DWORD oth_off);
79 BOOL check_sym(
string n_sym);
86 BOOL check_sym(WORD n_ord);
92 VOID obfuscate(
string o_sym);
98 VOID obfuscate(WORD o_ord);
112 VOID apply_obfuscation(PBYTE pe_rawf, DWORD strings_off, vector<BYTE>& strings,
113 vector<shellcode::obfuscated_sym>& symbols);
119 vector<csym> mod_syms;
123 vector<BYTE> pe_rawf;
124 vector<cmod> pe_mods;
130 BOOL disable_the_relocation();
136 BOOL remove_debug_symbols();
142 BOOL make_the_iat_writable();
151 template <
typename t_sym_info>
152 VOID find_symbols(
string dll_name, t_sym_info sym_info, vector<csym*>& p_syms);
160 BOOL add_shellcode_entry(PIMAGE_SECTION_HEADER& sh_sec, DWORD entry);
168 BOOL section_of_rva(DWORD rva, PIMAGE_SECTION_HEADER& sec);
176 BOOL rva_to_offset(DWORD rva, DWORD& offset);
184 BOOL rva_to_ptr(DWORD ptr_rva, PVOID* p_ptr);
192 BOOL create_shellcode_section(PIMAGE_SECTION_HEADER& sh_sec, DWORD& funs_rva);
201 BOOL get_data_table(
size_t data_entry, PVOID* p_table_ptr,
size_t& table_size);
208 BOOL get_dos_header(PIMAGE_DOS_HEADER& dos_hdr);
216 BOOL get_nt_headers(PIMAGE_DOS_HEADER dos_hdr, PIMAGE_NT_HEADERS& nt_hdrs);
223 BOOL verify_machine(PIMAGE_NT_HEADERS nt_hdrs);
231 BOOL verify_sections(PIMAGE_DOS_HEADER dos_hdr, PIMAGE_NT_HEADERS nt_hdrs);
242 BOOL insert_import(cmod& dll_mod, DWORD dll_off,
size_t th_sym, DWORD fth_rva, DWORD oth_off);
250 BOOL parse_imports(PIMAGE_IMPORT_DESCRIPTOR p_imports,
size_t imports_size);
257 VOID apply_obfuscations(PIMAGE_SECTION_HEADER& sh_sec, DWORD& syms_rva);
266 VOID add_shellcode_stub(PIMAGE_SECTION_HEADER& sh_sec, DWORD funs_offset, DWORD syms_rva, DWORD& entry);
272 VOID finalize_pe(PIMAGE_SECTION_HEADER& sh_sec);
283 template <
typename t_sym_info,
typename t_obf_info>
284 cobf_error obf_sym_internal(
string dll_name, t_sym_info sym_info, t_obf_info obf_info);
294 template <
typename t_sym_info>
295 cobf_error unobf_sym_internal(
string dll_name, t_sym_info sym_info);
303 cobf(
string pe_path);
340 cobf_error obf_sym(
string dll_name,
string sym_name,
string obf_name);
351 cobf_error obf_sym(
string dll_name,
string sym_name, WORD obf_ord);
362 cobf_error obf_sym(
string dll_name, WORD sym_ord, WORD obf_ord);
373 cobf_error obf_sym(
string dll_name, WORD sym_ord,
string obf_name);
383 cobf_error unobf_sym(
string dll_name,
string sym_name);
393 cobf_error unobf_sym(
string dll_name, WORD sym_ord);