summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-10-10 21:28:16 -0400
committerRusty Wagner <rusty@vector35.com>2016-10-10 21:28:16 -0400
commit7e4cbbbf09e8dcda20f552a937b458aa09c28cf9 (patch)
tree95e0ef73cddbf83936d772a3f0bec64ce6d8c8a3 /binaryninjacore.h
parent70dd487931d7bcd75e10753a741fba3299488327 (diff)
parentcf7832b8025c9acee11304bec0540f8896d56299 (diff)
Merge branch 'segments' into dev
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h81
1 files changed, 78 insertions, 3 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 0eeeaa48..ac615922 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -201,7 +201,14 @@ extern "C"
FunctionContinuationLineType,
StackVariableLineType,
StackVariableListEndLineType,
- FunctionEndLineType
+ FunctionEndLineType,
+ NoteStartLineType,
+ NoteLineType,
+ NoteEndLineType,
+ SectionStartLineType,
+ SectionEndLineType,
+ SectionSeparatorLineType,
+ NonContiguousSeparatorLineType
};
enum BNSymbolType
@@ -1144,8 +1151,44 @@ extern "C"
void (*destructFunction)(void* ctxt, BNFunction* func);
};
+ enum BNSegmentFlag
+ {
+ SegmentExecutable = 1,
+ SegmentWritable = 2,
+ SegmentReadable = 4,
+ SegmentContainsData = 8,
+ SegmentContainsCode = 0x10,
+ SegmentDenyWrite = 0x20,
+ SegmentDenyExecute = 0x40
+ };
+
+ struct BNSegment
+ {
+ uint64_t start, length;
+ uint64_t dataOffset, dataLength;
+ uint32_t flags;
+ };
+
+ struct BNSection
+ {
+ char* name;
+ char* type;
+ uint64_t start, length;
+ char* linkedSection;
+ char* infoSection;
+ uint64_t infoData;
+ uint64_t align, entrySize;
+ };
+
+ struct BNAddressRange
+ {
+ uint64_t start;
+ uint64_t end;
+ };
+
BINARYNINJACOREAPI char* BNAllocString(const char* contents);
BINARYNINJACOREAPI void BNFreeString(char* str);
+ BINARYNINJACOREAPI void BNFreeStringList(char** strs, size_t count);
BINARYNINJACOREAPI void BNShutdown(void);
@@ -1273,6 +1316,8 @@ extern "C"
BINARYNINJACOREAPI BNFileMetadata* BNGetFileForView(BNBinaryView* view);
BINARYNINJACOREAPI char* BNGetViewType(BNBinaryView* view);
+ BINARYNINJACOREAPI BNBinaryView* BNGetParentView(BNBinaryView* view);
+
BINARYNINJACOREAPI size_t BNReadViewData(BNBinaryView* view, void* dest, uint64_t offset, size_t len);
BINARYNINJACOREAPI BNDataBuffer* BNReadViewBuffer(BNBinaryView* view, uint64_t offset, size_t len);
@@ -1332,6 +1377,35 @@ extern "C"
BINARYNINJACOREAPI bool BNFindNextData(BNBinaryView* view, uint64_t start, BNDataBuffer* data, uint64_t* result,
BNFindFlag flags);
+ BINARYNINJACOREAPI void BNAddAutoSegment(BNBinaryView* view, uint64_t start, uint64_t length,
+ uint64_t dataOffset, uint64_t dataLength, uint32_t flags);
+ BINARYNINJACOREAPI void BNRemoveAutoSegment(BNBinaryView* view, uint64_t start, uint64_t length);
+ BINARYNINJACOREAPI void BNAddUserSegment(BNBinaryView* view, uint64_t start, uint64_t length,
+ uint64_t dataOffset, uint64_t dataLength, uint32_t flags);
+ BINARYNINJACOREAPI void BNRemoveUserSegment(BNBinaryView* view, uint64_t start, uint64_t length);
+ BINARYNINJACOREAPI BNSegment* BNGetSegments(BNBinaryView* view, size_t* count);
+ BINARYNINJACOREAPI void BNFreeSegmentList(BNSegment* segments);
+ BINARYNINJACOREAPI bool BNGetSegmentAt(BNBinaryView* view, uint64_t addr, BNSegment* result);
+
+ BINARYNINJACOREAPI void BNAddAutoSection(BNBinaryView* view, const char* name, uint64_t start, uint64_t length,
+ const char* type, uint64_t align, uint64_t entrySize, const char* linkedSection, const char* infoSection,
+ uint64_t infoData);
+ BINARYNINJACOREAPI void BNRemoveAutoSection(BNBinaryView* view, const char* name);
+ BINARYNINJACOREAPI void BNAddUserSection(BNBinaryView* view, const char* name, uint64_t start, uint64_t length,
+ const char* type, uint64_t align, uint64_t entrySize, const char* linkedSection, const char* infoSection,
+ uint64_t infoData);
+ BINARYNINJACOREAPI void BNRemoveUserSection(BNBinaryView* view, const char* name);
+ BINARYNINJACOREAPI BNSection* BNGetSections(BNBinaryView* view, size_t* count);
+ BINARYNINJACOREAPI BNSection* BNGetSectionsAt(BNBinaryView* view, uint64_t addr, size_t* count);
+ BINARYNINJACOREAPI void BNFreeSectionList(BNSection* sections, size_t count);
+ BINARYNINJACOREAPI bool BNGetSectionByName(BNBinaryView* view, const char* name, BNSection* result);
+ BINARYNINJACOREAPI void BNFreeSection(BNSection* section);
+
+ BINARYNINJACOREAPI char** BNGetUniqueSectionNames(BNBinaryView* view, const char** names, size_t count);
+
+ BINARYNINJACOREAPI BNAddressRange* BNGetAllocatedRanges(BNBinaryView* view, size_t* count);
+ BINARYNINJACOREAPI void BNFreeAddressRanges(BNAddressRange* ranges);
+
// Raw binary data view
BINARYNINJACOREAPI BNBinaryView* BNCreateBinaryDataView(BNFileMetadata* file);
BINARYNINJACOREAPI BNBinaryView* BNCreateBinaryDataViewFromBuffer(BNFileMetadata* file, BNDataBuffer* buf);
@@ -1340,7 +1414,8 @@ extern "C"
BINARYNINJACOREAPI BNBinaryView* BNCreateBinaryDataViewFromFile(BNFileMetadata* file, BNFileAccessor* accessor);
// Creation of new types of binary views
- BINARYNINJACOREAPI BNBinaryView* BNCreateCustomBinaryView(const char* name, BNFileMetadata* file, BNCustomBinaryView* view);
+ BINARYNINJACOREAPI BNBinaryView* BNCreateCustomBinaryView(const char* name, BNFileMetadata* file,
+ BNBinaryView* parent, BNCustomBinaryView* view);
// Binary view type management
BINARYNINJACOREAPI BNBinaryViewType* BNGetBinaryViewTypeByName(const char* name);
@@ -1623,7 +1698,7 @@ extern "C"
BINARYNINJACOREAPI BNStringReference* BNGetStrings(BNBinaryView* view, size_t* count);
BINARYNINJACOREAPI BNStringReference* BNGetStringsInRange(BNBinaryView* view, uint64_t start,
uint64_t len, size_t* count);
- BINARYNINJACOREAPI void BNFreeStringList(BNStringReference* strings);
+ BINARYNINJACOREAPI void BNFreeStringReferenceList(BNStringReference* strings);
BINARYNINJACOREAPI BNStackVariable* BNGetStackLayout(BNFunction* func, size_t* count);
BINARYNINJACOREAPI void BNFreeStackLayout(BNStackVariable* vars, size_t count);