mirror of
https://github.com/67-6f-64/AntiOreans-CodeDevirtualizer
synced 2026-06-08 10:18:33 +00:00
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#ifndef WILD_BASE_HPP_
|
|
#define WILD_BASE_HPP_
|
|
|
|
#include "wild_handler_parser.hpp"
|
|
#include "wild_handler.hpp"
|
|
|
|
class wild_base : public wild_handler_parser
|
|
{
|
|
virtual bool parse_initial_handler(instruction_container& instructions) = 0;
|
|
|
|
virtual bool parse_virtual_handler(instruction_container& instructions, uint32_t index, uint32_t compares) = 0;
|
|
virtual bool fetch_virtual_handler(std::size_t index, wild_handler** handler) = 0;
|
|
|
|
virtual bool update_argument_data() { return false; }
|
|
|
|
public:
|
|
wild_base(wild_context& context);
|
|
|
|
public:
|
|
bool devirtualize(uint32_t vm_function, uint32_t vm_entry, instruction_container& vm_instructions);
|
|
|
|
private:
|
|
bool parse_virtual_machine(uint32_t vm_entrance);
|
|
|
|
bool trace_function(instruction_container& instructions);
|
|
|
|
bool process_virtual_pointer(instruction_container& instructions, wild_opcode_label& label);
|
|
void process_virtual_function(instruction_container& instructions);
|
|
|
|
bool parse_initial_handlers();
|
|
bool parse_virtual_handlers();
|
|
|
|
bool parse_next_handler_offset(instruction_container& instructions);
|
|
|
|
private:
|
|
uint32_t vm_function;
|
|
uint32_t vm_entrance;
|
|
};
|
|
|
|
#endif |