
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 폴더에 있습니다. ground truth 심볼 정보가 포함된 학습 데이터를 생성합니다. 이 스크립트는 push-button 방식이며, 사용 지침은 해당 폴더에 제공되어 있습니다.ReSym_rawdata)에서 제공됩니다. 이 프로젝트에서 사용한 원시 바이너리 파일과 해당 디컴파일된 코드가 포함되어 있습니다:
bin/: 디버깅 정보가 포함된 원시 스트리핑되지 않은(non-stripped) 바이너리 파일이 들어 있습니다.decompiled/: 완전히 스트리핑된(stripped) 바이너리의 디컴파일된 코드입니다.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}
}