{"id":13503010,"url":"https://github.com/gimli-rs/object","last_synced_at":"2025-05-13T15:12:54.982Z","repository":{"id":38358353,"uuid":"66110995","full_name":"gimli-rs/object","owner":"gimli-rs","description":"A unified interface for reading and writing object file formats","archived":false,"fork":false,"pushed_at":"2025-04-25T06:29:20.000Z","size":2590,"stargazers_count":726,"open_issues_count":33,"forks_count":167,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-05-13T13:07:47.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://docs.rs/object/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gimli-rs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-08-19T20:41:55.000Z","updated_at":"2025-05-13T03:06:31.000Z","dependencies_parsed_at":"2023-02-10T20:01:06.304Z","dependency_job_id":"81c4c8ec-c95f-45b8-af91-003a3cf136d2","html_url":"https://github.com/gimli-rs/object","commit_stats":{"total_commits":789,"total_committers":101,"mean_commits":7.811881188118812,"dds":0.3016476552598225,"last_synced_commit":"61dc7b00e0f8ce44d31e5555b124256a50fdeafd"},"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fobject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fobject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fobject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fobject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gimli-rs","download_url":"https://codeload.github.com/gimli-rs/object/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253948445,"owners_count":21988957,"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","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":[],"created_at":"2024-07-31T22:02:33.337Z","updated_at":"2025-05-13T15:12:49.969Z","avatar_url":"https://github.com/gimli-rs.png","language":"Rust","readme":"# `object`\n\nThe `object` crate provides a unified interface to working with object files\nacross platforms. It supports reading relocatable object files and executable files,\nand writing COFF/ELF/Mach-O/XCOFF relocatable object files and ELF/PE executable files.\n\nFor reading files, it provides multiple levels of support:\n\n* raw struct definitions suitable for zero copy access\n* low level APIs for accessing the raw structs ([example](crates/examples/src/readobj/))\n* a higher level unified API for accessing common features of object files, such\n  as sections and symbols ([example](crates/examples/src/objdump.rs))\n\nSupported file formats for reading: ELF, Mach-O, Windows PE/COFF, Wasm, XCOFF, and Unix archive.\n\nFor writing files, it provides:\n\n* low level writers for ELF, PE, and COFF\n* higher level builder for ELF ([example](crates/rewrite/src))\n* a unified API for writing relocatable object files (ELF, Mach-O, COFF, XCOFF)\n  ([example](crates/examples/src/bin/simple_write.rs))\n\n## Example for unified read API\n```rust\nuse object::{Object, ObjectSection};\nuse std::error::Error;\nuse std::fs;\n\n/// Reads a file and displays the name of each section.\nfn main() -\u003e Result\u003c(), Box\u003cdyn Error\u003e\u003e {\n    let binary_data = fs::read(\"path/to/binary\")?;\n    let file = object::File::parse(\u0026*binary_data)?;\n    for section in file.sections() {\n        println!(\"{}\", section.name()?);\n    }\n    Ok(())\n}\n```\n\nSee [`crates/examples`](crates/examples) for more examples.\n\n## Minimum Supported Rust Version (MSRV)\n\nChanges to MSRV are considered breaking changes. We are conservative about changing the MSRV,\nbut sometimes are required to due to dependencies. The MSRV is 1.65.0.\n\n## License\n\nLicensed under either of\n\n  * Apache License, Version 2.0 ([`LICENSE-APACHE`](./LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)\n  * MIT license ([`LICENSE-MIT`](./LICENSE-MIT) or https://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","funding_links":[],"categories":["Rust","Reverse Engineering"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgimli-rs%2Fobject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgimli-rs%2Fobject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgimli-rs%2Fobject/lists"}