Sinker Runtime Library
-
class sinker::Action
Subclassed by sinker::ActionInstall, sinker::ActionUninstall
Public Functions
-
virtual void act() = 0
-
virtual void act() = 0
-
class sinker::ActionInstall : public sinker::Action
Public Functions
-
inline ActionInstall(Installable *installable)
-
inline virtual void act() override
Private Members
-
Installable *installable = nullptr
-
inline ActionInstall(Installable *installable)
-
class sinker::ActionUninstall : public sinker::Action
Public Functions
-
inline ActionUninstall(Uninstallable *uninstallable)
-
inline virtual void act() override
Private Members
-
Uninstallable *uninstallable = nullptr
-
inline ActionUninstall(Uninstallable *uninstallable)
-
class sinker::Attributable
Subclassed by sinker::Module, sinker::Symbol
Public Functions
-
std::map<std::string, attribute_value_t, std::less<>> const &get_attributes() const
Private Members
-
std::map<std::string, attribute_value_t, std::less<>> attributes
-
std::map<std::string, attribute_value_t, std::less<>> const &get_attributes() const
-
class sinker::BinaryOperatorExpression : private sinker::Expression
Public Functions
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
inline virtual void dump(std::ostream &out) const override
Private Members
-
std::shared_ptr<Expression> lhs
-
std::shared_ptr<Expression> rhs
-
BinaryOperator binary_operator
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
class sinker::Context
Public Functions
-
inline Context()
-
void emplace_module(std::string_view name, std::optional<std::string> lpModuleName)
-
void dump(std::ostream &out) const
-
void dump_def(std::ostream &out) const
-
bool interpret(std::istream &input_stream, Language language, std::string input_filename, bool debug = false)
-
bool interpret(const char *input, std::size_t size, Language language, std::string input_filename, bool debug = false)
-
bool interpret(const std::string &input, Language language, std::string input_filename, bool debug = false)
-
void add_module_tag(std::string const &tag)
-
void add_symbol_tag(std::string const &tag)
-
identifier_set_t const &get_symbol_tags() const
-
~Context()
-
inline Context()
-
template<typename T>
class sinker::Detour : public sinker::Installable, public sinker::Uninstallable
-
class sinker::Expression
Subclassed by sinker::BinaryOperatorExpression, sinker::GetProcAddressExpression, sinker::IntegerExpression, sinker::ModuleExpression, sinker::PatternMatchExpression, sinker::SymbolExpression, sinker::UnaryOperatorExpression
Public Functions
-
virtual std::optional<expression_value_t> calculate(Symbol *symbol) const = 0
-
virtual void dump(std::ostream &out) const = 0
-
inline virtual ~Expression()
-
virtual std::optional<expression_value_t> calculate(Symbol *symbol) const = 0
-
class sinker::GetProcAddressExpression : private sinker::Expression
Public Functions
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
inline virtual void dump(std::ostream &out) const override
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
class sinker::Installable
Subclassed by sinker::Detour< T >, sinker::Patch< T >, sinker::Patch< T[N]>
Public Functions
-
virtual void install() = 0
-
virtual void install() = 0
-
class sinker::IntegerExpression : private sinker::Expression
Public Functions
-
inline IntegerExpression(expression_value_t value)
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
inline virtual void dump(std::ostream &out) const override
Private Members
-
expression_value_t value
-
inline IntegerExpression(expression_value_t value)
-
class sinker::Module : public sinker::Attributable
Public Functions
-
std::string const &get_name() const
-
std::string const &get_real_variant() const
-
void emplace_symbol(std::string const &name, std::string const &type)
-
void add_variant(std::string const &name, std::string const &hash)
-
bool has_variant(std::string_view name) const
-
void dump(std::ostream &out) const
-
void dump_def(std::ostream &out) const
-
std::optional<expression_value_t> get_preferred_base_address() const
-
std::optional<expression_value_t> get_relocated_base_address() const
-
HMODULE get_hModule() const
-
void add_tag(std::string const &tag)
-
bool concretize()
-
bool is_concrete() const
Private Functions
Private Members
-
std::string name
-
std::optional<std::string> lpModuleName
-
std::optional<expression_value_t> preferred_base_address
-
std::optional<expression_value_t> relocated_base_address
-
std::map<std::string, std::string, std::less<>> variants
-
std::string real_variant
-
HMODULE hModule = 0
-
identifier_set_t tags
Friends
- friend class Context
-
std::string const &get_name() const
-
class sinker::ModuleExpression : private sinker::Expression
Public Functions
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
inline virtual void dump(std::ostream &out) const override
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
template<typename T>
class sinker::Patch : public sinker::Installable, public sinker::Uninstallable
-
template<typename T, std::size_t N>
class sinker::Patch<T[N]> : public sinker::Installable, public sinker::Uninstallable
-
class sinker::PatternMatchExact : private sinker::PatternMatchFragment
Public Functions
-
inline PatternMatchExact(const std::vector<std::uint8_t> &value)
-
inline virtual void *search(void *begin, void *end) const override
-
inline virtual bool begins_with(void *begin, void *end) const override
-
inline virtual std::size_t size() const override
-
inline virtual PatternMatchType type() const override
-
inline virtual bool collision(void *address) const
Private Members
-
std::vector<std::uint8_t> value
-
inline PatternMatchExact(const std::vector<std::uint8_t> &value)
-
class sinker::PatternMatchExpression : private sinker::Expression
Public Functions
-
inline PatternMatchExpression(std::vector<MaskedByte> const &needle, expression_value_t offset = 0, std::vector<PatternMatchFilter> const &filters = {})
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
inline virtual void dump(std::ostream &out) const override
Private Members
-
std::vector<PatternMatchFilter> filters
-
std::vector<MaskedByte> needle
-
expression_value_t offset
-
inline PatternMatchExpression(std::vector<MaskedByte> const &needle, expression_value_t offset = 0, std::vector<PatternMatchFilter> const &filters = {})
-
class sinker::PatternMatchFragment
Subclassed by sinker::PatternMatchExact, sinker::PatternMatchMask, sinker::PatternMatchWildcard
Public Functions
-
inline virtual ~PatternMatchFragment()
-
virtual void *search(void *begin, void *end) const = 0
-
virtual bool begins_with(void *begin, void *end) const = 0
-
virtual bool collision(void *address) const = 0
-
virtual std::size_t size() const = 0
-
virtual PatternMatchType type() const = 0
-
inline virtual ~PatternMatchFragment()
-
class sinker::PatternMatchMask : private sinker::PatternMatchFragment
Public Functions
-
inline PatternMatchMask(std::vector<MaskedByte> const &value)
-
inline virtual void *search(void *begin, void *end) const override
-
inline virtual bool begins_with(void *begin, void *end) const override
-
inline virtual std::size_t size() const override
-
inline virtual PatternMatchType type() const override
-
inline virtual bool collision(void *address) const
Private Members
-
std::vector<MaskedByte> value
-
inline PatternMatchMask(std::vector<MaskedByte> const &value)
-
class sinker::PatternMatchNeedle
Public Functions
-
inline PatternMatchNeedle(std::vector<MaskedByte> const &needle)
-
inline void *search(void *begin, void *end) const
-
inline virtual bool collision(void *address) const
Private Members
-
std::vector<std::unique_ptr<PatternMatchFragment>> fragments = {}
-
std::size_t size = 0
-
std::size_t offset = 0
-
std::size_t index = 0
-
inline PatternMatchNeedle(std::vector<MaskedByte> const &needle)
-
class sinker::PatternMatchWildcard : private sinker::PatternMatchFragment
Public Functions
-
inline PatternMatchWildcard(std::size_t size)
-
inline virtual void *search(void *begin, void *end) const override
-
inline virtual bool begins_with(void *begin, void *end) const override
-
inline virtual std::size_t size() const override
-
inline virtual PatternMatchType type() const override
-
inline virtual bool collision(void *address) const
Private Members
-
std::size_t s
-
inline PatternMatchWildcard(std::size_t size)
-
class sinker::Symbol : public sinker::Attributable
Public Functions
-
inline std::string const &get_name() const
-
void dump(std::ostream &out) const
-
void dump_def(std::ostream &out) const
-
void add_tag(std::string const &tag)
Private Members
-
std::optional<expression_value_t> cached_calculated_address
-
std::string name
-
std::string type
-
std::vector<std::pair<identifier_set_t, std::shared_ptr<Expression>>> addresses
-
identifier_set_t tags
Friends
- friend class Module
-
inline std::string const &get_name() const
-
class sinker::SymbolExpression : private sinker::Expression
Public Functions
-
inline virtual std::optional<expression_value_t> calculate(Symbol *_symbol) const override
-
inline virtual void dump(std::ostream &out) const override
-
inline virtual std::optional<expression_value_t> calculate(Symbol *_symbol) const override
-
class sinker::UnaryOperatorExpression : private sinker::Expression
Public Functions
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
inline virtual void dump(std::ostream &out) const override
-
inline virtual std::optional<expression_value_t> calculate(Symbol *symbol) const override
-
class sinker::Uninstallable
Subclassed by sinker::Detour< T >, sinker::Patch< T >, sinker::Patch< T[N]>
Public Functions
-
virtual void uninstall() = 0
-
virtual void uninstall() = 0
-
namespace sinker
Typedefs
-
typedef unsigned long long expression_value_t
-
typedef std::variant<expression_value_t, bool, std::string> attribute_value_t
-
typedef std::set<std::string> identifier_set_t
Enums
-
enum class UnaryOperator
Values:
-
enumerator PARENTHESES
-
enumerator INDIRECTION
-
enumerator RELOCATION
-
enumerator BITWISE_NOT
-
enumerator PARENTHESES
-
enum class BinaryOperator
Values:
-
enumerator ADDITION
-
enumerator SUBTRACTION
-
enumerator MULTIPLICATION
-
enumerator INTEGER_DIVISION
-
enumerator MODULO
-
enumerator BITWISE_AND
-
enumerator BITWISE_OR
-
enumerator BITWISE_XOR
-
enumerator BITWISE_SHIFT_LEFT
-
enumerator BITWISE_SHIFT_RIGHT
-
enumerator ARRAY_SUBSCRIPT
-
enumerator POINTER_PATH
-
enumerator ADDITION
Functions
-
std::ostream &operator<<(std::ostream &out, attribute_value_t const &attribute_value)
-
std::ostream &operator<<(std::ostream &os, Expression const &expression)
-
inline std::optional<expression_value_t> CheckedDereference(expression_value_t value)
-
typedef unsigned long long expression_value_t
- file sinker.hpp
- #include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include “”
Defines
-
PROPAGATE_UNRESOLVED(x)
-
PROPAGATE_UNRESOLVED(x)
- dir /home/docs/checkouts/readthedocs.org/user_builds/sinker/checkouts/latest/sinker/include
- dir /home/docs/checkouts/readthedocs.org/user_builds/sinker/checkouts/latest/sinker
- dir /home/docs/checkouts/readthedocs.org/user_builds/sinker/checkouts/latest/sinker/include/sinker