diff options
| author | Peter LaFosse <peter@vector35.com> | 2019-09-13 09:56:00 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2019-11-15 21:10:58 -0500 |
| commit | db48820f5fed420ad298278e8e6b055baa4ddf06 (patch) | |
| tree | 2b41a6f081f924b622887ddc42f5f579eebbd849 /ui | |
| parent | 3c329e77e0318db070099be2d1731c4e7ac510ba (diff) | |
Type workflow improvements
Expand type context for data renderers
Add additional linearview helper routines for defining variables inside of structures
fix unit tests
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/commands.h | 5 | ||||
| -rw-r--r-- | ui/createstructdialog.h | 2 | ||||
| -rw-r--r-- | ui/createtypedialog.h | 2 | ||||
| -rw-r--r-- | ui/linearview.h | 20 |
4 files changed, 25 insertions, 4 deletions
diff --git a/ui/commands.h b/ui/commands.h index f95664f1..0a591437 100644 --- a/ui/commands.h +++ b/ui/commands.h @@ -18,7 +18,7 @@ bool BINARYNINJAUIAPI askForNewType(QWidget* parent, BinaryViewRef data, Functio TypeRef& type, BinaryNinja::QualifiedName& name); bool BINARYNINJAUIAPI inputNewType(QWidget* parent, BinaryViewRef data, FunctionRef currentFunction, uint64_t currentAddr, HighlightTokenState& highlight); -bool BINARYNINJAUIAPI createInferredMember(BinaryViewRef data, HighlightTokenState& highlight); +bool BINARYNINJAUIAPI createInferredMember(QWidget* parent, BinaryViewRef data, HighlightTokenState& highlight, FunctionRef func); bool BINARYNINJAUIAPI overwriteCode(BinaryViewRef data, ArchitectureRef arch, uint64_t addr, size_t len, const BinaryNinja::DataBuffer& buffer); @@ -29,3 +29,6 @@ StructureRef BINARYNINJAUIAPI getInnerMostStructureContaining(BinaryViewRef data size_t& memberIndex, const std::vector<std::string>& nameList, size_t nameIndex, TypeRef& type, std::string& typeName); StructureRef BINARYNINJAUIAPI getInnerMostStructureContainingOffset(BinaryViewRef data, StructureRef structure, const std::vector<std::string>& nameList, size_t nameIndex, size_t& offset, TypeRef& type, std::string& typeName); + +// Auto generate a structure name +std::string BINARYNINJAUIAPI createStructureName(BinaryViewRef data);
\ No newline at end of file diff --git a/ui/createstructdialog.h b/ui/createstructdialog.h index df117411..096adefb 100644 --- a/ui/createstructdialog.h +++ b/ui/createstructdialog.h @@ -16,7 +16,7 @@ class BINARYNINJAUIAPI CreateStructDialog: public QDialog uint64_t m_resultSize; public: - CreateStructDialog(QWidget* parent); + CreateStructDialog(QWidget* parent, const std::string& name); BinaryNinja::QualifiedName getName() { return m_resultName; } uint64_t getSize() { return m_resultSize; } diff --git a/ui/createtypedialog.h b/ui/createtypedialog.h index 1d0effe3..552f2076 100644 --- a/ui/createtypedialog.h +++ b/ui/createtypedialog.h @@ -16,7 +16,7 @@ class BINARYNINJAUIAPI CreateTypeDialog: public QDialog std::map<BinaryNinja::QualifiedName, TypeRef> m_results; public: - CreateTypeDialog(QWidget* parent, BinaryViewRef data, const QString& definition); + CreateTypeDialog(QWidget* parent, BinaryViewRef data, const QString& title, const QString& definition); std::map<BinaryNinja::QualifiedName, TypeRef> getResults() { return m_results; } private Q_SLOTS: diff --git a/ui/linearview.h b/ui/linearview.h index b30e127c..53e8802c 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -127,6 +127,18 @@ class BINARYNINJAUIAPI LinearView: public QAbstractScrollArea, public View, publ bool isLineValidHighlight(const BinaryNinja::LinearDisassemblyLine& line); void ensureLineVisible(size_t line); + TypeRef createStructure(BinaryNinja::QualifiedName& name, uint64_t size); + StructureRef defineInnerType(TypeRef type, TypeRef baseType, uint64_t offset, uint64_t size); + StructureRef defineInnerPointer(TypeRef type, ArchitectureRef arch, uint64_t baseAddress, uint64_t offset, uint64_t size); + StructureRef defineInnerStruct(TypeRef type, uint64_t offset, uint64_t size); + StructureRef defineInnerArray(TypeRef type, uint64_t offset, uint64_t size); + StructureRef defineInnerName(TypeRef type, uint64_t offset, uint64_t size); + StructureRef defineInnerUnknownType(QWidget* parent, TypeRef type, uint64_t offset, uint64_t size); + StructureRef defineInnerIntegerSize(TypeRef type, uint64_t offset, uint64_t size); + StructureRef defineInnerSign(TypeRef type, uint64_t offset, uint64_t size); + TypeRef getPointerTypeAndName(ArchitectureRef arch, uint64_t addr, std::string& name); + std::string getVariableName(uint64_t addr); + private Q_SLOTS: void viewInHexEditor(); void viewInGraph(); @@ -155,15 +167,21 @@ private Q_SLOTS: void skipAndReturnZero(); void skipAndReturnValue(); + void makeTypes(TypeRef type); void makeInt8(); void makeInt16(); void makeInt32(); void makeInt64(); void toggleIntSize(); + void toggleIntSign(); void makePtr(); void makeString(); void changeType(); - void inferStructureType(); + void createStructOrinferStructureType(); + void createArray(); + void createStruct(); + void createNewTypes(); + size_t getStringLength(uint64_t startAddr); void displayAsDefault(); |
