You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#pragma once
|
|
|
|
#include <coff/image.hpp>
|
|
|
|
#include <cstdint>
|
|
|
|
#include <linuxpe>
|
|
|
|
#include <vector>
|
|
|
|
#include <optional>
|
|
|
|
|
|
|
|
#include <comp/symbol_table.hpp>
|
|
|
|
#include <decomp/routine.hpp>
|
|
|
|
|
|
|
|
namespace theo::decomp {
|
|
|
|
class decomp_t {
|
|
|
|
public:
|
|
|
|
explicit decomp_t(std::vector<std::uint8_t>& lib_data,
|
|
|
|
comp::symbol_table_t* syms);
|
|
|
|
|
|
|
|
std::vector<routine_t> rtns();
|
|
|
|
std::vector<std::uint8_t> lib();
|
|
|
|
std::vector<coff::image_t> objs();
|
|
|
|
comp::symbol_table_t* syms();
|
|
|
|
std::optional<comp::symbol_table_t*> decompose();
|
|
|
|
|
|
|
|
private:
|
|
|
|
std::vector<std::uint8_t> m_lib_data;
|
|
|
|
std::vector<coff::image_t> m_obj_imgs;
|
|
|
|
std::vector<routine_t> m_rtns;
|
|
|
|
comp::symbol_table_t* m_syms;
|
|
|
|
};
|
|
|
|
} // namespace theo::decomp
|