Skip to content
/ gore Public
forked from goretk/gore

GoRE - Package gore is a library for analyzing Go binaries

License

Notifications You must be signed in to change notification settings

go-delve/gore

This branch is 5 commits ahead of, 147 commits behind goretk/gore:develop.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e5316c3 · Feb 12, 2024
Nov 10, 2023
Nov 10, 2023
Dec 11, 2023
Feb 12, 2024
Dec 11, 2023
Sep 17, 2021
Sep 17, 2021
Sep 17, 2021
Jul 19, 2019
Jun 11, 2021
Sep 26, 2021
Sep 26, 2021
Sep 26, 2021
May 19, 2022
Sep 26, 2021
Nov 15, 2023
Nov 10, 2023
Sep 26, 2021
Sep 26, 2021
May 19, 2022
Dec 11, 2023
Nov 10, 2023
May 19, 2022
Apr 14, 2023
Sep 26, 2021
Feb 12, 2024
Sep 26, 2021
Nov 15, 2023
May 19, 2022
Apr 14, 2023
Nov 2, 2023
Nov 2, 2023
May 20, 2022
Oct 23, 2021
Apr 14, 2023
Sep 26, 2021
Apr 21, 2023
Sep 26, 2021
Feb 12, 2024
Apr 15, 2022
Apr 14, 2023
Apr 14, 2023

Repository files navigation

Build Status GitHub tag (latest SemVer) codecov Go Report Card Go Reference

GoRE - Package gore is a library for analyzing Go binaries

How to use

  1. Use go get to download the library.
  2. Import it into your project.
  3. Write a new cool tool.

For an example use case, please checkout redress.

Sample code

Extract the main package, child packages, and sibling packages:

f, err := gore.Open(fileStr)
pkgs, err := f.GetPackages()

Extract all the types in the binary:

f, err := gore.Open(fileStr)
typs, err := f.GetTypes()

Update get new Go release information

Instead of downloading new release of the library to get detection for new Go releases, it is possible to do a local pull.

Run go generate and new compiler releases will be generated from the git tags.

Functionality

Go compiler

The library has functionality for guessing the compiler version used. It searches the binary for the identifiable string left by the compiler. It is not perfect, so functionality for assuming a specific version is also provided. The version strings used are identical to the identifiers. For example version "1.10.1" is represented as "go1.10.1" and version "1.10" is represented as "go1.10"

Function recovery

Function information is recovered from the pclntab. Information that is recovered includes: function start and end location in the text section, source file. The library also tries to estimate the first and last line number in the source file for the function. The methods recovered includes the receiver. All functions and methods belong to a package. The library tries to classify the type of package. If it is a standard library package, 3rd-party package, or part of the main application. If it unable to classify the package, it is classified as unknown.

Type recovery

The types in the binary are parsed from the "typelink" list. Not all versions of Go are supported equally. Versions 1.7 and later are fully supported. Versions 1.5 and 1.6 are partially supported. Version prior to 1.5 are not supported at all at the moment.

About

GoRE - Package gore is a library for analyzing Go binaries

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%