diff options
Diffstat (limited to 'basedetection.cpp')
| -rw-r--r-- | basedetection.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/basedetection.cpp b/basedetection.cpp index 4389f1b7..e994ede5 100644 --- a/basedetection.cpp +++ b/basedetection.cpp @@ -21,7 +21,6 @@ #include "binaryninjaapi.h" using namespace BinaryNinja; -using namespace std; BaseAddressDetection::BaseAddressDetection(Ref<BinaryView> bv) @@ -65,13 +64,29 @@ bool BaseAddressDetection::IsAborted() } -std::set<std::pair<size_t, uint64_t>> BaseAddressDetection::GetScores(BaseAddressDetectionConfidence* confidence) +std::set<std::pair<size_t, uint64_t>> BaseAddressDetection::GetScores(BNBaseAddressDetectionConfidence* confidence, + uint64_t *lastTestedBaseAddress) { std::set<std::pair<size_t, uint64_t>> result; BNBaseAddressDetectionScore scores[10]; - size_t numCandidates = BNGetBaseAddressDetectionScores(m_object, scores, 10, - (BNBaseAddressDetectionConfidence *)confidence); + size_t numCandidates = BNGetBaseAddressDetectionScores(m_object, scores, 10, confidence, lastTestedBaseAddress); for (size_t i = 0; i < numCandidates; i++) result.insert(std::make_pair(scores[i].Score, scores[i].BaseAddress)); return result; } + + +std::vector<BNBaseAddressDetectionReason> BaseAddressDetection::GetReasonsForBaseAddress(uint64_t baseAddress) +{ + std::vector<BNBaseAddressDetectionReason> result; + size_t count; + BNBaseAddressDetectionReason *reasons = BNGetBaseAddressDetectionReasons(m_object, baseAddress, &count); + if (!reasons) + return result; + + for (size_t i = 0; i < count; i++) + result.push_back(reasons[i]); + + free(reasons); + return result; +} |
