bindiff

package module
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 14, 2025 License: MIT Imports: 10 Imported by: 1

README

Logo

go-bindiff

Go package to interface with bindiff


Getting Started

go get github.com/blacktop/go-bindiff

bindiff demo tool

Install

go install github.com/blacktop/go-bindiff/cmd/bindiff@latest

Usage

❯ bindiff path/to/BinExport1 path/to/BinExport2
   • Running bindiff...
   • Reading bindiff results...
   • bindiff complete
   • memset_s                  confidence=0.99 similarity=1.00
   • timingsafe_bcmp           confidence=0.99 similarity=1.00
   • cc_clear                  confidence=0.99 similarity=1.00
   • cc_disable_dit            confidence=0.97 similarity=1.00
   • ccdigest_init             confidence=0.99 similarity=1.00
   • ccdigest_update           confidence=0.99 similarity=1.00
   • cchmac                    confidence=0.99 similarity=1.00
   • cchmac_init               confidence=0.99 similarity=1.00
   • cchmac_update             confidence=0.99 similarity=1.00
   • cchmac_final              confidence=0.99 similarity=1.00
   • ccdigest_final_64be       confidence=0.99 similarity=1.00
   <SNIP>

License

MIT Copyright (c) 2025 blacktop

Documentation

Overview

Package bindiff provides functionality to run bindiff and parse the diffs.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BasicBlockAlgorithm added in v0.1.2

type BasicBlockAlgorithm int
const (
	BBAlgorithmNone                         BasicBlockAlgorithm = iota
	BBAlgorithmEdgesPrimeProduct            BasicBlockAlgorithm = 1
	BBAlgorithmHashMatchingFourInstMin      BasicBlockAlgorithm = 2
	BBAlgorithmPrimeMatchingFourInstMin     BasicBlockAlgorithm = 3
	BBAlgorithmCallReferenceMatching        BasicBlockAlgorithm = 4
	BBAlgorithmStringReferencesMatching     BasicBlockAlgorithm = 5
	BBAlgorithmEdgesMdIndexTopDown          BasicBlockAlgorithm = 6
	BBAlgorithmMdIndexMatchingTopDown       BasicBlockAlgorithm = 7
	BBAlgorithmEdgesMdIndexBottomUp         BasicBlockAlgorithm = 8
	BBAlgorithmMdIndexMatchingBottomUp      BasicBlockAlgorithm = 9
	BBAlgorithmRelaxedMdIndexMatching       BasicBlockAlgorithm = 10
	BBAlgorithmPrimeMatchingNoInstMin       BasicBlockAlgorithm = 11
	BBAlgorithmEdgesLengauerTarjanDominated BasicBlockAlgorithm = 12
	BBAlgorithmLoopEntryMatching            BasicBlockAlgorithm = 13
	BBAlgorithmSelfLoopMatching             BasicBlockAlgorithm = 14
	BBAlgorithmEntryPointMatching           BasicBlockAlgorithm = 15
	BBAlgorithmExitPointMatching            BasicBlockAlgorithm = 16
	BBAlgorithmInstructionCountMatching     BasicBlockAlgorithm = 17
	BBAlgorithmJumpSequenceMatching         BasicBlockAlgorithm = 18
	BBAlgorithmPropagationSizeOne           BasicBlockAlgorithm = 19
	BBAlgorithmManual                       BasicBlockAlgorithm = 20
)

type BasicBlockMatch added in v0.1.2

type BasicBlockMatch struct {
	ID         int `gorm:"primaryKey"`
	FunctionID int
	Address1   decimal.Decimal `gorm:"type:BIGINT"`
	Address2   decimal.Decimal `gorm:"type:BIGINT"`
	Algorithm  BasicBlockAlgorithm
	Evalute    bool
}

func (BasicBlockMatch) String added in v0.1.2

func (bbm BasicBlockMatch) String() string

type BinDiff

type BinDiff struct {
	ExportPrev string
	ExportNext string
	DiffFile   string
	Output     string
	// contains filtered or unexported fields
}

func NewBinDiff

func NewBinDiff(prev, next, output string) (*BinDiff, error)

func (*BinDiff) BasicBlockMatches added in v0.1.2

func (b *BinDiff) BasicBlockMatches() []BasicBlockMatch

func (*BinDiff) Close added in v0.1.2

func (b *BinDiff) Close() error

func (*BinDiff) Files added in v0.1.2

func (b *BinDiff) Files() []File

func (*BinDiff) FunctionMatches added in v0.1.2

func (b *BinDiff) FunctionMatches() []FunctionMatch

func (*BinDiff) Instructions added in v0.1.2

func (b *BinDiff) Instructions() []Instruction

func (*BinDiff) Metadata added in v0.1.2

func (b *BinDiff) Metadata() Metadata

func (*BinDiff) Read added in v0.1.2

func (b *BinDiff) Read() (err error)

func (*BinDiff) Run

func (b *BinDiff) Run() error

type File added in v0.1.2

type File struct {
	ID              int `gorm:"primaryKey"`
	Filename        string
	ExeFilename     string
	Hash            string
	Functions       int
	LibFunctions    int
	Calls           int
	BasicBlocks     int
	LibBasicBlocks  int
	Edges           int
	LibEdges        int
	Instructions    int
	LibInstructions int
}

type FunctionAlgorithm added in v0.1.2

type FunctionAlgorithm int
const (
	FAlgorithmNone                             FunctionAlgorithm = iota
	FAlgorithmNameHashMatching                 FunctionAlgorithm = 1
	FAlgorithmHashMatching                     FunctionAlgorithm = 2
	FAlgorithmEdgesFlowgraphMdIndex            FunctionAlgorithm = 3
	FAlgorithmEdgesCallgraphMdIndex            FunctionAlgorithm = 4
	FAlgorithmMdIndexMatchingFlowgraphTopDown  FunctionAlgorithm = 5
	FAlgorithmMdIndexMatchingFlowgraphBottomUp FunctionAlgorithm = 6
	FAlgorithmPrimeSignatureMatching           FunctionAlgorithm = 7
	FAlgorithmMdIndexMatchingCallGraphTopDown  FunctionAlgorithm = 8
	FAlgorithmMdIndexMatchingCallGraphBottomUp FunctionAlgorithm = 9
	FAlgorithmRelaxedMdIndexMatching           FunctionAlgorithm = 10
	FAlgorithmInstructionCount                 FunctionAlgorithm = 11
	FAlgorithmAddressSequence                  FunctionAlgorithm = 12
	FAlgorithmStringReferences                 FunctionAlgorithm = 13
	FAlgorithmLoopCountMatching                FunctionAlgorithm = 14
	FAlgorithmCallSequenceMatchingExact        FunctionAlgorithm = 15
	FAlgorithmCallSequenceMatchingTopology     FunctionAlgorithm = 16
	FAlgorithmCallSequenceMatchingSequence     FunctionAlgorithm = 17
	FAlgorithmCallReferenceMatching            FunctionAlgorithm = 18
	FAlgorithmManual                           FunctionAlgorithm = 19
)

type FunctionMatch added in v0.1.2

type FunctionMatch struct {
	ID             int             `gorm:"primaryKey"`
	Address1       decimal.Decimal `gorm:"type:BIGINT"`
	Name1          string
	Address2       decimal.Decimal `gorm:"type:BIGINT"`
	Name2          string
	Similarity     float64
	Confidence     float64
	Flags          int
	Algorithm      FunctionAlgorithm
	Evalute        bool
	Commentsported bool
	Basicblocks    int
	Edges          int
	Instructions   int
}

func (FunctionMatch) String added in v0.1.2

func (fm FunctionMatch) String() string

type Instruction added in v0.1.2

type Instruction struct {
	ID       int             `gorm:"primaryKey"`
	Address1 decimal.Decimal `gorm:"type:BIGINT"`
	Address2 decimal.Decimal `gorm:"type:BIGINT"`
}

func (Instruction) String added in v0.1.2

func (i Instruction) String() string

type Metadata added in v0.1.2

type Metadata struct {
	Version     string
	File1       int
	File2       int
	Description string
	Created     time.Time
	Modified    time.Time
	Similarity  float64
	Confidence  float64
}

Directories

Path Synopsis
cmd
bindiff Module
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL