
For our CCS24 paper 🏆 "ReSym: Harnessing LLMs to Recover Variable and Data Structure Symbols from Stripped Binaries" by Danning Xie, Zhuo Zhang, Nan Jiang, Xiangzhe Xu, Lin Tan, and Xiangyu Zhang. 🏆 ACM SIGSAC Distinguished Paper Award Winner
このリポジトリは、論文 "ReSym: Harnessing LLMs to Recover Variable and Data Structure Symbols from Stripped Binaries" (CCS 2024) のアーティファクトを提供します。
🏆 ACM SIGSAC Distinguished Paper Award 受賞
注意: 当アーティファクトは積極的にメンテナンス・更新されています。最新バージョンを使用していることを確認してください。
process_data フォルダ内にあります。グラウンドトゥルースのシンボル情報を含むトレーニングデータを生成します。スクリプトはワンボタンで実行でき、使用方法はフォルダ内に記載されています。ReSym_rawdata) で入手できます。これには、このプロジェクトで使用した生のバイナリファイルと対応する逆コンパイル済みコードが含まれています:
bin/: デバッグ情報を含む、ストリップされていない生のバイナリファイルが含まれます。decompiled/: 完全にストリップされたバイナリから得られた逆コンパイル済みコード。metadata.json: プロジェクト情報を含む、バイナリのメタデータ。training_src フォルダにあります。ReSym_data) で入手できます。これには、FieldDecoder と VarDecoder のトレーニングデータ、テストデータ、予測結果が含まれます。posterior_reasoning フォルダ内の、ユーザー定義データ構造を復元するための事後推論結果。詳細と手順はフォルダ内にあります。training_src フォルダにあります。@inproceedings{10.1145/3658644.3670340,
author = {Xie, Danning and Zhang, Zhuo and Jiang, Nan and Xu, Xiangzhe and Tan, Lin and Zhang, Xiangyu},
title = {ReSym: Harnessing LLMs to Recover Variable and Data Structure Symbols from Stripped Binaries},
year = {2024},
isbn = {9798400706363},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3658644.3670340},
doi = {10.1145/3658644.3670340},
abstract = {Decompilation aims to recover a binary executable to the source code form and hence has a wide range of applications in cyber security, such as malware analysis and legacy code hardening. A prominent challenge is to recover variable symbols, including both primitive and complex types such as user-defined data structures, along with their symbol information such as names and types. Existing efforts focus on solving parts of the problem, e.g., recovering only types (without names) or only local variables (without user-defined structures). In this paper, we propose ReSym, a novel hybrid technique that combines Large Language Models (LLMs) and program analysis to recover both names and types for local variables and user-defined data structures. Our method encompasses fine-tuning two LLMs to handle local variables and structures, respectively. To overcome the token limitations inherent in current LLMs, we devise a novel Prolog-based algorithm to aggregate and cross-check results from multiple LLM queries, suppressing uncertainty and hallucinations. Our experiments show that ReSym is effective in recovering variable information and user-defined data structures, substantially outperforming the state-of-the-art methods.},
booktitle = {Proceedings of the 2024 on ACM SIGSAC Conference on Computer and Communications Security},
pages = {4554–4568},
numpages = {15},
keywords = {large language models, program analysis, reverse engineering},
location = {Salt Lake City, UT, USA},
series = {CCS '24}
}