diff options
Diffstat (limited to 'plugins/rtti/rtti.h')
| -rw-r--r-- | plugins/rtti/rtti.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/plugins/rtti/rtti.h b/plugins/rtti/rtti.h index b46a33a1..00b105eb 100644 --- a/plugins/rtti/rtti.h +++ b/plugins/rtti/rtti.h @@ -6,6 +6,8 @@ constexpr const char *VIEW_METADATA_RTTI = "rtti"; constexpr int RTTI_CONFIDENCE = 100; namespace BinaryNinja::RTTI { + Ref<Symbol> GetRealSymbol(BinaryView *view, uint64_t relocAddr, uint64_t symAddr); + std::optional<std::string> DemangleNameMS(BinaryView* view, bool allowMangled, const std::string &mangledName); std::optional<std::string> DemangleNameGNU3(BinaryView* view, bool allowMangled, const std::string &mangledName); @@ -69,6 +71,14 @@ namespace BinaryNinja::RTTI { class RTTIProcessor { protected: + enum class FunctionDiscoverState + { + Failed = 0, + AlreadyExists = 1, + Discovered = 2, + Extern = 3 + }; + Ref<BinaryView> m_view; Ref<Logger> m_logger; @@ -78,6 +88,10 @@ namespace BinaryNinja::RTTI { virtual std::optional<ClassInfo> ProcessRTTI(uint64_t objectAddr) = 0; virtual std::optional<VirtualFunctionTableInfo> ProcessVFT(uint64_t vftAddr, ClassInfo &classInfo, std::optional<BaseClassInfo> baseClassInfo) = 0; + + [[nodiscard]] bool IsLikelyFunction(uint64_t addr) const; + + [[nodiscard]] FunctionDiscoverState DiscoverVirtualFunction(uint64_t vftEntryAddr, uint64_t& vFuncAddr); public: virtual ~RTTIProcessor() = default; |
