要約
関数名は人間のリバースエンジニアにとって大きな助けとなるため、ストリップされたバイナリの関数名を予測する機械学習ベースのアプローチの開発に拍車がかかっている。この分野での現在の研究の多くは、コードから関数名への機械翻訳のメタファーを適用する変換器を使用しています。それでもなお、関数名予測モデルは、学習セットとは無関係なプロジェクトに汎化するという課題に直面している。本論文では、自動画像キャプション付けの進歩をバイナリリバースエンジニアリングの分野に応用することで、全く新しいアプローチを取る。BLensは、複数の2値関数の埋め込みを新しいアンサンブル表現に結合し、対照学習アプローチにより名前表現の潜在空間と整列させ、関数名用に調整された変換器アーキテクチャにより関数名を生成する。我々の実験では、BLensが最先端の技術を大幅に上回ることが実証された。バイナリごとに分割する通常の設定では、$F_1$スコアは0.70に対して0.79を達成した。汎化性を重視したプロジェクト横断的な設定では、0.29に対して0.46の$F_1$スコアを達成した。最後に、プロジェクト間で共有されるコンポーネントを減らす実験的設定では、$0.19$に対して$0.32$の$F_1$スコアを達成した。
要約(オリジナル)
Function names can greatly aid human reverse engineers, which has spurred the development of machine learning-based approaches to predicting function names in stripped binaries. Much current work in this area now uses transformers, applying a metaphor of machine translation from code to function names. Still, function naming models face challenges in generalizing to projects unrelated to the training set. In this paper, we take a completely new approach by transferring advances in automated image captioning to the domain of binary reverse engineering, such that different parts of a binary function can be associated with parts of its name. We propose BLens, which combines multiple binary function embeddings into a new ensemble representation, aligns it with the name representation latent space via a contrastive learning approach, and generates function names with a transformer architecture tailored for function names. Our experiments demonstrate that BLens significantly outperforms the state of the art. In the usual setting of splitting per binary, we achieve an $F_1$ score of 0.79 compared to 0.70. In the cross-project setting, which emphasizes generalizability, we achieve an $F_1$ score of 0.46 compared to 0.29. Finally, in an experimental setting reducing shared components across projects, we achieve an $F_1$ score of $0.32$ compared to $0.19$.
arxiv情報
著者 | Tristan Benoit,Yunru Wang,Moritz Dannehl,Johannes Kinder |
発行日 | 2025-02-03 15:26:39+00:00 |
arxivサイト | arxiv_id(pdf) |