diff options
| author | Rusty Wagner <rusty@vector35.com> | 2016-07-19 01:28:31 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2016-07-19 01:28:31 -0400 |
| commit | b2faff7bd9112a878b5fca33048fdbab2fb52045 (patch) | |
| tree | 8c5cc32fc90fb48f7b74c1721bf7cdc9084e9817 /binaryview.cpp | |
| parent | 9a97191ff5966c1621dc49091263d439a5b50fa8 (diff) | |
Adding APIs for data variables
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/binaryview.cpp b/binaryview.cpp index 864b4687..6d96c8ea 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -764,6 +764,67 @@ void BinaryView::AbortAnalysis() } +void BinaryView::DefineDataVariable(uint64_t addr, Type* type) +{ + BNDefineDataVariable(m_object, addr, type->GetObject()); +} + + +void BinaryView::DefineUserDataVariable(uint64_t addr, Type* type) +{ + BNDefineUserDataVariable(m_object, addr, type->GetObject()); +} + + +void BinaryView::UndefineDataVariable(uint64_t addr) +{ + BNUndefineDataVariable(m_object, addr); +} + + +void BinaryView::UndefineUserDataVariable(uint64_t addr) +{ + BNUndefineUserDataVariable(m_object, addr); +} + + +map<uint64_t, DataVariable> BinaryView::GetDataVariables() +{ + size_t count; + BNDataVariable* vars = BNGetDataVariables(m_object, &count); + + map<uint64_t, DataVariable> result; + for (size_t i = 0; i < count; i++) + { + DataVariable var; + var.address = vars[i].address; + var.type = new Type(BNNewTypeReference(vars[i].type)); + var.autoDiscovered = vars[i].autoDiscovered; + result[var.address] = var; + } + + BNFreeDataVariables(vars, count); + return result; +} + + +bool BinaryView::GetDataVariableAtAddress(uint64_t addr, DataVariable& var) +{ + var.address = 0; + var.type = nullptr; + var.autoDiscovered = false; + + BNDataVariable result; + if (!BNGetDataVariableAtAddress(m_object, addr, &result)) + return false; + + var.address = result.address; + var.type = new Type(result.type); + var.autoDiscovered = result.autoDiscovered; + return true; +} + + vector<Ref<Function>> BinaryView::GetAnalysisFunctionList() { size_t count; |
