Neural Machine Translation Inspired Binary Code Similarity Comparison beyond Function Pairs
TABLE I: The number of basic-block pairs in the training, validation and testing datasets.
['[EMPTY]', 'Training Sim.', 'Training Dissim.', 'Training Total', 'Validation Sim.', 'Validation Dissim.', 'Validation Total', 'Testing Sim.', 'Testing Dissim.', 'Testing Total', '[BOLD] Total  [BOLD] Sim.', '[BOLD] Total  [BOLD] Dissim.', '[BOLD] Total']
All basic-block pairs in the dataset are labeled with the similarity ground truth. In particular, we prepare this dataset using OpenSSL (v1.1.1-pre1) and four popular Linux packages, including coreutils (v8.29), findutils (v4.6.0), diffutils (v3.6), and binutils (v2.30). We use two architectures (x86-64 and ARM) and clang (v6.0.0) with three different optimization levels (O1-O3) to compile each program. In total, we obtain 437,104 basic blocks for x86, and 393,529 basic blocks for ARM.