{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/assemblage-automatic-binary-dataset","title":"Assemblage: Automatic Binary Dataset Construction for Machine Learning","arxiv_id":"2405.03991","date":"2024-05-07","proceeding":null,"authors":["Chang Liu","Rebecca Saul","Yihao Sun","Edward Raff","Maya Fuchs","Townsend Southard Pantano","James Holt","Kristopher Micinski"],"abstract":"Binary code is pervasive, and binary analysis is a key task in reverse engineering, malware classification, and vulnerability discovery. Unfortunately, while there exist large corpora of malicious binaries, obtaining high-quality corpora of benign binaries for modern systems has proven challenging (e.g., due to licensing issues). Consequently, machine learning based pipelines for binary analysis utilize either costly commercial corpora (e.g., VirusTotal) or open-source binaries (e.g., coreutils) available in limited quantities. To address these issues, we present Assemblage: an extensible cloud-based distributed system that crawls, configures, and builds Windows PE binaries to obtain high-quality binary corpuses suitable for training state-of-the-art models in binary analysis. We have run Assemblage on AWS over the past year, producing 890k Windows PE and 428k Linux ELF binaries across 29 configurations. Assemblage is designed to be both reproducible and extensible, enabling users to publish \"recipes\" for their datasets, and facilitating the extraction of a wide array of features. We evaluated Assemblage by using its data to train modern learning-based pipelines for compiler provenance and binary function similarity. Our results illustrate the practical need for robust corpora of high-quality Windows PE binaries in training modern learning-based binary analyses. Assemblage code is open sourced under the MIT license, and the dataset can be downloaded from https://assemblage-dataset.net","url_abs":"https://arxiv.org/abs/2405.03991v2","url_pdf":"https://arxiv.org/pdf/2405.03991v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"assemblage-automatic-binary-dataset","repo_url":"https://github.com/assemblage-dataset/assemblage","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"assemblage-automatic-binary-dataset","repo_url":"https://github.com/FutureComputing4AI/Reverse-Engineering-Function-Search","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":null}],"tasks":[{"task_slug":"malware-classification","task_name":"Malware Classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2405.03991","atlas_url":"https://app.syntology.ai/?focus=2405.03991","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.03991"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/FutureComputing4AI/Reverse-Engineering-Function-Search","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/assemblage-dataset/assemblage","reach":null}],"summary":{"ran_draft_wrong":1,"unverified":1},"by_repo_kind":{"official":{"samples":2,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":2,"samples":[{"code_sha256_prefix":"5dcdee30a4b59d7a","entry":"scale_args","repo":"assemblage-dataset/assemblage","repo_kind":"official","path":"assemblage_tui.py","file_url":"https://github.com/assemblage-dataset/assemblage/blob/HEAD/assemblage_tui.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5dcdee30a4b59d7a"}},{"code_sha256_prefix":"e74fe555d736e1b6","entry":"write_secrets_env","repo":"assemblage-dataset/assemblage","repo_kind":"official","path":"assemblage_tui.py","file_url":"https://github.com/assemblage-dataset/assemblage/blob/HEAD/assemblage_tui.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e74fe555d736e1b6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}