Skip to content

Releases: dzonerzy/gopcode

GoPCode 0.1.3

Choose a tag to compare

@dzonerzy dzonerzy released this 14 Nov 00:13

πŸš€ GoPCode 0.1.3 includes:

  • 2.15x Performance improvement πŸ”₯

We got an overall performance increase of 2.15x with a memory allocation reduction of 12x and a memory allocation size reduction of 12.1x

Before:

pkg: github.com/dzonerzy/gopcode
cpu: AMD Ryzen 7 7800X3D 8-Core Processor          
BenchmarkTranslate-16    	  211861	      5850 ns/op	    7160 B/op	     108 allocs/op

After:

pkg: github.com/dzonerzy/gopcode
cpu: AMD Ryzen 7 7800X3D 8-Core Processor           
BenchmarkTranslate-16    	  400641	      2719 ns/op	     592 B/op	       9 allocs/op

With the next release I plan to optimize also the C side (libpcode_c) to achieve a total speed increase of 5x .

Full Changelog: 0.1.2...0.1.3

GoPCode 0.1.2

Choose a tag to compare

@dzonerzy dzonerzy released this 19 Jul 20:44

πŸš€ GoPCode 0.1.2 includes:

  • Support for darwin arm64 (MacOS m-series) thanks to @JJJJJJack
  • Fix for multiple memory leaks thanks to @JJJJJJack

What's Changed

  • Some fixes along with OSX darwin support by @JJJJJJack in #1

New Contributors

Full Changelog: 0.1.1...0.1.2

GoPCode 0.1.1

Choose a tag to compare

@dzonerzy dzonerzy released this 15 Jul 16:10

GoPCode 0.1.1 includes:

  • Support for pretty printing lifted P-Code

A new API was created for the PcodeTranslation named Format and can be used like this:

trans, err := ctx.Translate(b, 0x401000, 1024, 0)
if err != nil {
	log.Fatalf("failed to translate: %v", err)
}
defer trans.Destroy()

for _, op := range trans.Ops {
	fmt.Println(trans.Format(op))
}

You can then expect something similar

IMARK ram[401000:4]
unique[4400:8] = RCX + 0x10
unique[db80:8] = *[const]unique[4400:8]
RAX = unique[db80:8]
IMARK ram[401004:1]
RIP = *[const]RSP
RSP = RSP + 0x8
return RIP

Full Changelog: 0.1.0...0.1.1

GoPCode 0.1.0

Choose a tag to compare

@dzonerzy dzonerzy released this 14 Jul 23:05

πŸš€ This is the first release of GoPCode , it includes:

  • Support for translating bytes to Ghidra P-Code
  • Support for disassemble bytes to assembly code

Keep in mind the binary files are quite big, in order to make them portable the full Ghidra processor filesystem is embedded inside the library.