{"id":22989052,"url":"https://github.com/sad0p/go-readelf","last_synced_at":"2025-08-13T20:33:38.474Z","repository":{"id":49536117,"uuid":"282966696","full_name":"sad0p/go-readelf","owner":"sad0p","description":"Elf binary parsing utility written in Go.","archived":false,"fork":false,"pushed_at":"2022-10-17T16:04:15.000Z","size":9682,"stargazers_count":70,"open_issues_count":0,"forks_count":17,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-12T06:55:32.727Z","etag":null,"topics":["elf-binaries","elf-parser","golang-tools","reverse-enginnering"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sad0p.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-27T17:22:13.000Z","updated_at":"2024-10-22T13:20:11.000Z","dependencies_parsed_at":"2022-09-15T01:20:27.917Z","dependency_job_id":null,"html_url":"https://github.com/sad0p/go-readelf","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/sad0p/go-readelf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sad0p%2Fgo-readelf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sad0p%2Fgo-readelf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sad0p%2Fgo-readelf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sad0p%2Fgo-readelf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sad0p","download_url":"https://codeload.github.com/sad0p/go-readelf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sad0p%2Fgo-readelf/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270305842,"owners_count":24562109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elf-binaries","elf-parser","golang-tools","reverse-enginnering"],"created_at":"2024-12-15T04:15:56.588Z","updated_at":"2025-08-13T20:33:38.198Z","avatar_url":"https://github.com/sad0p.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"What is it ?\n\ngo-readelf is a small elf binary parser currently capable of printing relocation entries, elf header, sections and Symbols.\nIt utilizes Go's elf package for typing and structure information while performing the mechanics for \nparsing elf binaries independently. It supports both 32 and 64-bit elf binaries and was tested/built on x86_64 Linux (Arch).\n\nWhat about binutils readelf ?\n\nThis is a pet project really meant to culuminate/expand what I am currently studying out of a book called \nLinux Binary Analysis (chapter-2). Readelf is about 16k lines of C code, so this is in no way a replacement (it would be a meme to claim it is).\nIf you would like to see what elf parsing looks like in Golang then this utility source code certainly helps, maybe for some reason you need a lightweight elf parser.\nI'd also suggest\nthe elf package in Golang.\n\nInstallation:\n\u003cpre\u003e\n[terminal]$ git clone https://github.com/sad0p/go-readelf.git\n[terminal]$ cd go-readelf\n[terminal]$ go build -o go-readelf main.go types.go\n[terminal]$ ./go-readelf\nUsage: ./go-readelf [-hrsS] \u0026lt;target-binary\u0026gt;\n        -h: View elf header\n        -r: View relocation entries\n        -s: View symbols\n        -S: View Sections\n        -l: View program headers\n[terminal]$ \n\u003c/pre\u003e\nSource code quality:\nI'm fairly new to Go, as a matter of fact this is the first application I've written in the language, refactoring\nalong the lines of the Effective Go guidelines are welcomed if I missed anything.\n\n\nFuture work related to this project:\n\nI'm definitely looking forward to writing a parser that is resistant to anti-reverse engineering techniques that corrupt\nElf meta data to the point it stops analysis tools like this, but binary is still interpreted and executes correctly.\n\n\n------------------------------------------ Work In Progress -----------------------------------------------------------------\n\n- Adding program header parsing (2 weeks max from this commit). -- COMPLETED (thanks to contributor leifiel)\n- Section header to segment mappings (coming soon)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsad0p%2Fgo-readelf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsad0p%2Fgo-readelf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsad0p%2Fgo-readelf/lists"}