<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="/v2/static/oai2.xsl"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2026-10-06T05:02:32Z</responseDate>
  <request identifier="oai:figshare.com:article/34040505" metadataPrefix="oai_dc" verb="GetRecord">https://api.figshare.com/v2/oai</request>
  <GetRecord>
    <record>
      <header>
        <identifier>oai:figshare.com:article/34040505</identifier>
        <datestamp>2026-10-01T06:21:03Z</datestamp>
        <setSpec>category_29203</setSpec>
        <setSpec>item_type_3</setSpec>
        <setSpec>month_year_10_2026</setSpec>
      </header>
      <metadata>
        <oai_dc:dc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
          <dc:title>BinFuncGt</dc:title>
          <dc:creator>N A (25137249)</dc:creator>
          <dc:subject>Software engineering not elsewhere classified</dc:subject>
          <dc:subject>Code and Source</dc:subject>
          <dc:description>BinFuncGT&lt;p dir="ltr"&gt;BinFuncGT is a research framework for &lt;b&gt;binary software composition analysis (BSCA)&lt;/b&gt;. It provides function-level ground truth, static feature extraction, candidate retrieval, call-graph-aware structural matching, and evaluation of component and version identification.&lt;/p&gt;&lt;p dir="ltr"&gt;The project, benchmark, and construction utilities are named &lt;b&gt;BinFuncGT&lt;/b&gt;. Python modules and filesystem paths use the lowercase spelling &lt;code&gt;binfuncgt&lt;/code&gt;.&lt;/p&gt;&lt;h2 dir="ltr"&gt;Features&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Binary analysis:&lt;/b&gt; Parse ELF metadata, symbol tables, and DWARF information, and recover functions and call graphs with angr CFGFast.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Function representation:&lt;/b&gt; Extract instruction counts, basic-block counts, control-flow edges, call sites, immediate-constant statistics, cyclomatic complexity, and mnemonic histograms.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Candidate retrieval:&lt;/b&gt; Generate candidate function pairs using cosine similarity, a top-r selection rule, and a similarity threshold.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Structural matching:&lt;/b&gt; Combine local similarity, preserved call relationships, and one-to-one matching constraints in a unified optimization objective.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Reduction and classical solvers:&lt;/b&gt; Apply safe reductions and interaction-graph decomposition, with greedy, Hungarian, CP-SAT, simulated annealing, and small-instance exhaustive solvers.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Function-level evaluation:&lt;/b&gt; Measure precision, recall, and F1 against raw and strict ground-truth correspondences.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Version identification:&lt;/b&gt; Explore constant features, string features, differential weighting, and version-discriminative string scoring.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Statistical analysis:&lt;/b&gt; Provide paired comparisons, ranking diagnostics, and Benjamini–Hochberg false discovery rate correction.&lt;/li&gt;&lt;/ul&gt;&lt;h2 dir="ltr"&gt;Repository Structure&lt;/h2&gt;&lt;p dir="ltr"&gt;The main directories and modules are organized as follows:&lt;/p&gt;&lt;pre&gt;&lt;pre&gt;.&lt;br&gt;├── configs/                 # Benchmark and experiment configurations&lt;br&gt;├── data/                    # Binary data, intermediate features, and instances&lt;br&gt;├── experiments/&lt;br&gt;│   ├── pilot/               # Matching, baseline, ablation, and ranking results&lt;br&gt;│   │   └── score_cache_v2/  # Per-instance scoring caches&lt;br&gt;│   ├── case_study/          # Debian case-study results and reports&lt;br&gt;│   └── versiongrid_v3/      # Extended version-grid design and build records&lt;br&gt;├── results/                 # Aggregate results, statistics, and logs&lt;br&gt;├── scripts/                 # Experiment and report-generation entry points&lt;br&gt;├── src/binfuncgt/&lt;br&gt;│   ├── binary/              # ELF parsing, call graphs, and ground truth&lt;br&gt;│   ├── data/                # BinFuncGT schemas and instance I/O&lt;br&gt;│   ├── features/            # Static features and vectorization&lt;br&gt;│   ├── retrieval/           # Candidate function retrieval&lt;br&gt;│   ├── matching/            # Matching instances and objectives&lt;br&gt;│   ├── reduction/           # Safe and heuristic reductions&lt;br&gt;│   ├── solvers/             # Classical optimization methods&lt;br&gt;│   ├── scoring/             # Downstream structural scores&lt;br&gt;│   ├── evaluation/          # Evaluation metrics&lt;br&gt;│   └── feasibility/         # Classical matching and solver statistics&lt;br&gt;└── requirements.txt         # Pinned Python dependencies&lt;br&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;h2 dir="ltr"&gt;Configuration&lt;/h2&gt;&lt;p dir="ltr"&gt;The principal benchmark configurations are:&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;&lt;p dir="ltr"&gt;Configuration&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p dir="ltr"&gt;Experiment setting&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;configs/binkit_x86_v2.yaml&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Same-architecture matching across build variants&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;configs/binkit_xarch_v2.yaml&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Cross-architecture matching with the same compiler and optimization level&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;configs/pilot_versiongrid_v2.yaml&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Component and version comparisons on VersionGrid v2&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;configs/pilot_versiongrid_v3.yaml&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Extended version-grid comparisons&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p dir="ltr"&gt;The &lt;code&gt;x86&lt;/code&gt; configuration name is historical: its pairing rule is &lt;code&gt;arch_relation: same&lt;/code&gt;, covering matching architectures represented in the input corpus.&lt;/p&gt;&lt;p dir="ltr"&gt;Common settings include:&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;&lt;p dir="ltr"&gt;Parameter&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p dir="ltr"&gt;Main protocol setting&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Candidate count per target function&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;r = 5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Cosine-similarity threshold&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Same-architecture feature set&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;full&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Cross-architecture feature set&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;structural&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Matching objective weights&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;alpha = beta = 1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p dir="ltr"&gt;CP-SAT time budget&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;60 seconds by default in the main scoring runners&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Structural score weights&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;(0.5, 0.3, 0.2)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;h2 dir="ltr"&gt;Experiment Scripts&lt;/h2&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;&lt;p dir="ltr"&gt;Script&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p dir="ltr"&gt;Purpose&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq1_function_gt.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Function-level matching evaluation&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq1_function_gt_report.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Function-level result summaries and paired comparisons&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/run_feasibility.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Structural matching and per-instance feasibility statistics&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/analyze_results.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Pilot result aggregation&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/score_v2.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Multi-method benchmark scoring&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/report_v2.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Scoring-cache summaries and statistical comparisons&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/run_baselines.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Classical baselines through&lt;/p&gt; &lt;code&gt;run&lt;/code&gt; &lt;p dir="ltr"&gt;and&lt;/p&gt; &lt;code&gt;summarize&lt;/code&gt; &lt;p dir="ltr"&gt;subcommands&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq5_feature_attribution.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Feature attribution analysis&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq6_stripped.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Evaluation with stripped target binaries&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq7_diff_weighted.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Differential feature-weighting experiments&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq7_tie_audit.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Tie and candidate-set diagnostics&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq7_str_scorer.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Version-discriminative string scoring&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/rq7_stats.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Statistical comparisons of string-based methods&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/fdr_correction.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Benjamini–Hochberg FDR correction&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/debian_case_study.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;Debian case-study evaluation&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/debian_str_idf.py&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;p dir="ltr"&gt;String-IDF evaluation on Debian binaries&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;</dc:description>
          <dc:date>2026-10-01T06:21:03Z</dc:date>
          <dc:type>Dataset</dc:type>
          <dc:type>Dataset</dc:type>
          <dc:identifier>10.6084/m9.figshare.34040505.v1</dc:identifier>
          <dc:relation>https://figshare.com/articles/dataset/BinFuncGt/34040505</dc:relation>
          <dc:rights>CC BY 4.0</dc:rights>
        </oai_dc:dc>
      </metadata>
    </record>
  </GetRecord>
</OAI-PMH>
