[연구] [구형준/황성재 교수] SecAI/SoftSec 연구실, ACM International Conference on the Foundations of Software Engineering (FSE 2024) 논문 게재
- 소프트웨어학과
- 조회수1353
- 2024-01-25
[구형준/황성재 교수] SecAI/SoftSec 연구실,
ACM International Conference on the Foundations of Software Engineering (FSE 2024) 논문 게재
SecAI 연구실 (지도교수 구형준, https://secai.skku.edu)과 SoftSec 연구실 (지도교수 황성재, https://softsec.skku.edu)의 엄하은 학생 (석사과정), 김도희 학생 (석사과정), 임소리 학생 (학부과정)의 "R2I: A Relative Readability Metric for Decompiled Code" 논문이 소프트웨어 엔지니어링 분야 최우수 학회 (IF=4)인 ACM International Conference on the Foundations of Software Engineering (FSE 2024)에 게재 승인되어 2024년 7월에 발표될 예정입니다.
디컴파일러는 기계어를 사람이 이해하기 쉬운 코드로 변환해 주는 도구로 바이너리 역공학에 핵심적인 역할을 합니다. 디컴파일 코드의 가독성은 바이너리에 대한 이해도를 향상시키고 효율적인 분석을 가능하게 합니다. Hex-rays, Ghidra와 같은 디컴파일러들은 디컴파일된 코드의 가독성 향상을 위해 노력하고 있지만, 디컴파일 코드의 가독성을 측정하는 메트릭은 부족하며, 기존 연구는 대부분 소스 코드의 가독성에 중점을 두고 있습니다. (디컴파일 코드는 주석이나 의미 있는 변수명이 없고, 문법적 오류나 low-level expression 등이 포함되어 있어 소스 코드 메트릭을 적용하는 것은 적절하지 않습니다.)
본 논문에서는 디컴파일 코드의 가독성을 상대적으로 평가할 수 있도록 최초의 디컴파일러 전용 가독성 메트릭인 R2I (Readability Relative Index)을 제안합니다. R2I 메트릭은 디컴파일 코드에서 AST (Abstract Syntax Tree)를 추출한 후 이를 기반으로 사전에 정의한 31개의 특성 (feature)에 가중치 (weight)를 적용해 상대적인 가독성 점수를 계산합니다. 디컴파일 코드 특성은 기존 디컴파일러의 가독성 향상을 위한 방식과 이전 소스 코드 가독성 연구를 참고하여 31가지를 선별했습니다. 또한, 코딩 스타일이나 선호도에 따라 주관적일 수 있는 특성의 경우 설문 조사를 통해 가중치를 조정했습니다. R2I의 효용성과 실용성을 검증하기 위해 여섯 가지 디컴파일러 결과를 대상으로 5,305개의 함수에 R2I 점수를 계산하고, 디컴파일러 사용 경험과 개발 경험이 있는 사람을 모집하여 설문 조사를 진행해 설문 조사의 결과와 R2I의 결과가 일치함을 보였습니다.
Abstract.
Decompilation is a process of converting a low-level machine code snippet back into a high-level programming language such as C. It serves as a basis to aid reverse engineers in comprehending the contextual semantics of the code. In this respect, commercial decompilers like Hex-Rays have made significant strides in improving the readability of decompiled code over time. While previous work has proposed the metrics for assessing the readability of source code, including identifiers, variable names, function names, and comments, those metrics are unsuitable for measuring the readability of decompiled code primarily due to i) the lack of rich semantic information in the source and ii) the presence of erroneous syntax or inappropriate expressions. In response, to the best of our knowledge, this work first introduces R2I, the Relative Readability Index, a specialized metric tailored to evaluate decompiled code in a relative context quantitatively. In essence, R2I can be computed by i) taking code snippets across different decompilers as input and ii) extracting pre-defined features from an abstract syntax tree. For the robustness of R2I, we thoroughly investigate the enhancement efforts made by existing decompilers and academic research to promote code readability, identifying 31 features to yield a reliable index collectively. Besides, we conducted a user survey to capture subjective factors such as one’s coding styles and preferences. Our empirical experiments demonstrate that R2I is a versatile metric capable of representing the relative quality of decompiled code (e.g., obfuscation, decompiler updates) and being well aligned with human perception in our survey.