From a40f0e1e494af967a35ca4a8977596f4693b5c0e Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 29 Sep 2016 18:41:13 -0400 Subject: Adding APIs for segments and sections --- binaryninjacore.h | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) (limited to 'binaryninjacore.h') diff --git a/binaryninjacore.h b/binaryninjacore.h index b6d2f7ed..530fe241 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -1137,8 +1137,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); @@ -1266,6 +1302,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); @@ -1325,6 +1363,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); @@ -1333,7 +1400,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); @@ -1616,7 +1684,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); -- cgit v1.3.1 From 5ff32d681d087cd964394576a135cde4a47e9f9f Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 29 Sep 2016 23:28:37 -0400 Subject: Add line types for notes in linear view --- binaryninjacore.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'binaryninjacore.h') diff --git a/binaryninjacore.h b/binaryninjacore.h index 530fe241..b834769c 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -200,7 +200,10 @@ extern "C" FunctionContinuationLineType, StackVariableLineType, StackVariableListEndLineType, - FunctionEndLineType + FunctionEndLineType, + NoteBeginLineType, + NoteLineType, + NoteEndLineType }; enum BNSymbolType -- cgit v1.3.1 From 9c986eca7082afffe98d8f89bbace8aaea912990 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 4 Oct 2016 02:19:37 -0400 Subject: Adding line types for section and segment separators --- binaryninjacore.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'binaryninjacore.h') diff --git a/binaryninjacore.h b/binaryninjacore.h index b834769c..281850a2 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -201,9 +201,13 @@ extern "C" StackVariableLineType, StackVariableListEndLineType, FunctionEndLineType, - NoteBeginLineType, + NoteStartLineType, NoteLineType, - NoteEndLineType + NoteEndLineType, + SectionStartLineType, + SectionEndLineType, + SectionSeparatorLineType, + NonContiguousSeparatorLineType }; enum BNSymbolType -- cgit v1.3.1