https://ieeexplore.ieee.org/document/10077368
완전히 이해하지는 못했지만 기록용으로
읽은 논문에 대해 정리해본다!
1. Introduction
효율적인 연산을 유지하면서 최대한 많은 문맥 정보를 보존할 수 있는 Well-Balanced Instruction Normalization (WIN)를 고안
2. Background
A. BINARY CODE REPRESENTATION
B. RECURRENT NEURAL NETWORK
C. ATTENTION AND TRANSFORMER
D. LANGUAGE MODEL AND BERT
3. Binary Code Semantics
A. DEFINITION OF CODE SEMANTICS
B. OBSERVATIONS AND INSIGHTS
- Machine instructions follow Zipf’s Law
- A function often conveys a meaningful context.
4. DeepSemantic DESIGN
A. WELL-BALANCED INSTRUCTION NORMALIZATION
An efficient instruction normalization process is crucial to prepare its vectorization form for a neural network as adopted by many prior approaches.
the final contextual information is determined by the quality of word embeddings based on an individual normalized instruction.
but, 과도하게 일반적인 정규화 → 상당한 양의 맥락 정보를 잃음
과도하게 세분화된 정규화 → OOV(어휘 내 부재)를 발생
→
DeepBinDiff considers a register size to symbolize an n-byte register (❽); however, it converts all immediates into imme (❾).
InnerEye discards the size information of registers (❿) for a 64-bit machine instruction set.
SAFE retains immediate values (❼).
WIN은 여러 접근 방식에서 취한 방식과 다른 nomalization 사용
To this end, we introduce a well-balanced instruction normalization (WIN) strategy that strikes a balance (between the expressiveness of binary code semantics and a reasonable amount of tokens, preserving the semantics of instruction).
table 1. x86_64 WIN **규칙** : Immediate, Register, Pointer
가능한 한 많은 맥락 정보를 보존하는 것 목표
i) an immediate can fall into a jump or call destination, a value itself or a reference, according to a string literal, statically allocated variable or other data; #2 #6 #5 #4
ii) a register can be classified with a size by default; but the ones with a special purpose stay intact such as a stack pointer, instruction pointer, or base pointer; #1 #4 #3
iii) a pointer expression follows the original format, ‘‘base+index*scale+displacement’’ so that certain memory access information can be preserved; #3
B. OVERVIEW
B. 개요 Equipped with WIN and our insights on binary code, we present DeepSemantic atop BERT
DeepSemantic은 원래 BERT 구조를 채택하며 두 가지 단계로 구성
💡 i) 일반 모델을 생성하는 pre-training 단계
💡 ii) 다운스트림 작업용 특수 모델을 생성하는 fine-tuning 단계
이 논문에서는 binary code similarity task
DeepSemantic 의 디자인 선택에 대한 근거
• Function-level Graularity
We determine a function as a basic unit that can imply meaningful semantics from our insights in Section III-B.
• Function Embedding
DeepSemantic generates an embedding per function as a whole, rather than per instruction
• Well-balanced Instruction Normalization
We leverage the existing static binary analysis to normalize instructions so that a pre-training model can naturally embrace important features in a deep neural network.
Pre-train 된 모델 → DS-Pre
특정 task 에 맞춰서 Fine-tuning까지 된 모델 → DS-task
C. GENERIC MODEL FOR ASSEMBLY CODES
NLP 응용 프로그램에서는 BERT사용 가능
but, 인간언어가 아닌 기계어 같은 다른 언어에는 사용 불가.
따라서 DeepSemantic 새로운 데이터셋으로 훈련 필요
→
We adopt the original BERT’s masked language model (MLM), which probabilistically masks a pre-defined portion of normalized instructions (e.g., 15%), and then predicts them within a given function during pre-training.
D. SPECIAL MODEL FOR A DOWNSTREAM TASK
DeepSemantic aims to support specific downstream tasks that require the inference of contextual information from binary code, and it achieves this through quick re-training based on a pre-trained model that provides generic code representation.
During fine-tuning, a separate dataset with labeled data is required for supervised learning, adjusting a generic model tailored to a specialized task.
이 논문에서는 BINARY SIMILARITY (DS-BinSim)에 중점
1) DS-BinSim MODEL
a: BINARY CODE SIMILARITY TASK
we create a new dataset that comprises pairs of normalized functions (NFs) with a binary label whether the functions are identical.
DS-Pre 기반으로 각 NF 로부터 Hidden vector 를 찾아냄
b: BAG OF SIGNATURE (BoS)
supplementary information인 "Bag of Signature (BoS)"
WIN 과정에서 string이나 numeric constant 정보를 잃는 것 대비?
BoS Similarity score 계산 과정
ex)
f(F) = [1, 0 × 12, 8, 8, 8, 'Hello']
fG) = [0 × 12, 8, 8, 'Hello']
⇒
F = (1, 1, 3, 1)
G = (0, 1, 2, 1)
⇒
Cosine Similarity = 0.943 ( BoS(v→,w→) = 0.943… )
c. VECTOR CONCATENATION
hidden vector 두개와 BoS 값을 concat,
2*h +1 linear layer 통과
2) MODEL AND LOSS FUNCTION
For a binary similarity detection task, the logits can be calculated as following:
F(·) = fully-connected layer
h = hidden vector
To obtain the optimal network parameters in the fine-tuning layers, we use cross-entropy as a loss function; seeking the network parameters θ that satisfy.
C = a set of classes
p(c|y) = 실제 클래스 분포
p(c|ˆy) = 로짓(logits)에서 계산된 클래스 c 에 대한 추정 확률
5. Implementation
This section briefly describes the artifacts from static binary analysis and DeepSemantic implementation.
A. BINARY ANALYSIS ARTIFACTS
B BERT HYPERPARAMETERS
DS-Pre의 매개변수 수 8,723,914
6. Evaluation
DeepSemantic의 접근 방식은 DS-Pre와 DS-Task 두 번의 교육 과정을 포함하기 때문에 정확하고 공정한 평가를 위해 다양한 실험을 설정합니다.
먼저 DS-Pre 모델을 구축한 다음 효과와 효율성과 관련된 다음 네 가지 연구 질문에 답합니다.
- RQ1. DS-BinSim이 이진 유사성 감지 작업에 있어 DeepBinDiff [67], SAFE [43]와 같은 최첨단 접근 방식을 얼마나 능가하는지 (핵심 바이너리 의미 추론을 필요로 하는)를 어느 정도로 능가하는지 (VI-D 절 참조)?
- RQ2. 어떻게 DS-BinSim이 이진 코드 표현을 향상시키는 데 얼마나 잘 작동하는가? DS-BinSim이 DS-Pre에서 원래 함수 임베딩 벡터를 어떻게 업데이트하는지를 평가합니다 (VI-E 절 참조).
- RQ3. WIN이 DS-BinSim 모델에 어느 정도의 향상을 제공하는가? (VI-F 절 참조)
- RQ4. DeepSemantic이 실제로 얼마나 효율적인가 (VI-G 절 참조)
1) COMPARISON WITH DeepBinDiff
Table 4는 우리의 접근 방식이 컴파일러 및 최적화 수준의 모든 조합에서 DeepBinDiff (49.8%)를 상당히 능가한다는 것을 보여줍니다.
2) COMPARISON WITH SAFE
표 4에서 확인할 수 있듯이 우리의 방법은 전체 테스트 세트에서 SAFE를 15.8% 능가했습니다.
댓글