{"id":18894126,"url":"https://github.com/trailofbits/binary_type_inference","last_synced_at":"2025-04-15T00:32:00.130Z","repository":{"id":221215390,"uuid":"426338898","full_name":"trailofbits/binary_type_inference","owner":"trailofbits","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-10T11:56:00.000Z","size":3097,"stargazers_count":17,"open_issues_count":22,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-28T12:51:15.695Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/trailofbits.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2021-11-09T18:19:41.000Z","updated_at":"2025-03-03T19:18:51.000Z","dependencies_parsed_at":"2024-09-10T13:16:28.377Z","dependency_job_id":"cb454ce6-280f-48d6-bdca-6f171ca4aa05","html_url":"https://github.com/trailofbits/binary_type_inference","commit_stats":null,"previous_names":["trailofbits/binary_type_inference"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trailofbits%2Fbinary_type_inference","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trailofbits%2Fbinary_type_inference/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trailofbits%2Fbinary_type_inference/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trailofbits%2Fbinary_type_inference/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trailofbits","download_url":"https://codeload.github.com/trailofbits/binary_type_inference/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248984394,"owners_count":21193741,"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-11-08T08:18:12.393Z","updated_at":"2025-04-15T00:31:55.121Z","avatar_url":"https://github.com/trailofbits.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Binary Type Inference \n\nImplements the generation and solving of subtyping constraints over the json PCODE IR implemented in [CWE Checker](https://github.com/fkie-cad/cwe_checker).\n`binary_to_types` takes a binary, it's cwe checker JSON IR and some subtyping information then produces a json or protobuf representation of the ctypes.\n\n## Prerequisites\n* A rust stable toolchain (install via rustup)\n* Access to our current fork of [CWE Checker](https://github.com/trailofbits/cwe_checker). To use ssh auth for repositories, cargo requires that \nthe key be added to an ssh-agent: see more [here](https://doc.rust-lang.org/cargo/appendix/git-authentication.html)\n\n## Building\n\nRun `cargo build`\n\n## Testing\n\nRun `cargo test`\n\n## Generating All Documentation\n\nRun `cargo doc --document-private-items --open`\n\n## Running the Demo\n\nWe have implemented a [Ghidra frontend](https://github.com/trailofbits/BTIGhidra) for this type inference library. Please use that frontend to try \nout the type inference.\n\n## Acknowledgments\n\nThe underlying type inference algorithm used in this work was primarily inspired by and derives significant direction from the following paper:\n```\nM. Noonan, A. Loginov, and D. Cok, \"Polymorphic Type Inference for Machine Code,\" arXiv:1603.05495 [cs], Mar. 2016, Accessed: Nov. 08, 2021. [Online]. Available: http://arxiv.org/abs/1603.05495\n```\n\nThe methods described in the paper are patented under process patent [US10423397B2](https://patentcenter.uspto.gov/applications/15393463) held by GrammaTech, Inc. This work was developed with permission from GrammaTech pursuant to the GPLv3 terms of their own implementation: https://github.com/GrammaTech/retypd.\n\nAny opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of GrammaTech, Inc.\n\nWe would also like to thank the team at FKIE-CAD behind [CWE Checker](https://github.com/fkie-cad/cwe_checker). Their static analysis platform over Ghidra PCode provided an excellent base set of capabilities in our analysis. \n\n## License\n\n`binary_type_inference` is licensed according to the [GPL-3.0](LICENSE) license.\n\nThis research was developed with funding from the Defense Advanced Research Projects Agency (DARPA). The views, opinions and/or findings expressed are those of the author and should not be interpreted as representing the official views or policies of the Department of Defense or the U.S. Government.\n\nDistribution Statement A – Approved for Public Release, Distribution Unlimited\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrailofbits%2Fbinary_type_inference","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrailofbits%2Fbinary_type_inference","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrailofbits%2Fbinary_type_inference/lists"}