Sau đó, chúng tôi sẽ đánh giá hiệu quả của mô hình đểxuất trên những kịch bản phát hiện tương đồng và so sánh các công cụ BCSD liênquan và đạt được một kết quả tương đối vượt trội so với
Tình hình nghiên cứu và các công trình lên quan
Cac phương pháp truyền thống
Vào năm 1999, Baker và cộng sự đã phát triển phương pháp đầu tiên để phát hiện sự tương đồng mã nhị phân, giới thiệu công cụ Exediff nhằm nén sự khác biệt giữa các tệp thực thi DEC Alpha Họ nhận thấy rằng nhiều thay đổi giữa hai phiên bản của cùng một chương trình chủ yếu do quá trình biên dịch, như phân bổ thanh ghi và điều chỉnh giá trị con trỏ Exediff tái tạo các thay đổi này khi áp dụng bản vá, giúp giảm kích thước bản vá bằng cách loại bỏ những thay đổi không cần thiết Công cụ này, một trong những phương pháp sớm nhất trong việc tính toán sự tương đồng mã nhị phân, vẫn giữ nguyên giá trị cho đến ngày nay nhờ vào khả năng dịch ngược các byte thô thành các lệnh.
Năm đó, Wang và cộng sự đã phát triển BMAT, một công cụ khớp mã nhị phân, nhằm căn chỉnh hai phiên bản của tệp thực thi thư viện DLL.
Windows giúp truyền tải thông tin hồ sơ, giảm thiểu nhu cầu tạo lại hồ sơ Bmat là phương pháp tiên phong trong việc so sánh các hàm và khối cơ bản, với Exediff dùng để so sánh hai chuỗi lệnh Phương pháp này khớp các hàm trong hai tệp thực thi, sau đó tìm các khối tương tự trong mỗi hàm đã được khớp Kỹ thuật băm được áp dụng để so sánh các khối.
Trong những năm tới, mặc dù số lượng nghiên cứu về so sánh mã nhị phân (BCSD) còn hạn chế, nhưng các phương pháp này đã có tác động đáng kể, mở rộng sự tương đồng mã nhị phân từ khía cạnh cú pháp sang ngữ nghĩa Điều này bao gồm việc mở rộng từ so sánh mã nhị phân sang phân cụm và tìm kiếm mã nhị phân, cũng như ứng dụng trong phân tích phần mềm độc hại Đặc biệt, vào năm 2004, Halvar Flake đã đề xuất một phương pháp so sánh mã nhị phân dựa trên đồ thị.
Chương 2 COSO LY THUYẾT trung vào các thuộc tinh cấu trúc của mã bang cách xây dung một cách heuristic đỏ thị dang câu (callgraph isomorphism) để khớp các hàm trong hai versions của tệp nhị phân Đây là phương pháp đầu tiên xử lý việc sắp xếp lại các lệnh bên trong một hàm được tạo ra bởi một số tối ưu hóa của trình biên dịch Một công trình tiếp theo [8] đã mở rộng phương pháp này để khớp cả các khối cơ bản bên trong các hàm đã được khớp (như đã làm trong BMAT) và giới thiệu hàm băm
Small Primes Product (SPP) được sử dụng để xác định các khối cơ bản tương tự bất chấp sự sắp xếp lại lệnh Hai công trình này là nền tảng cho plugin BinDiff, một công cụ so sánh mã nhị phân phổ biến cho trình dịch ngược Ida Năm 2008, Gao và cộng sự đã giới thiệu BinHunt, phương pháp đầu tiên kiểm tra sự khác biệt ngữ nghĩa giữa hai phiên bản của cùng một chương trình Phương pháp này áp dụng kỹ thuật thực thi biểu tượng và constraint solver để xác định tính tương đương của các khối cơ bản.
Năm 2009, Hu và cộng sự đã giới thiệu phương pháp Smit, một công cụ tìm kiếm mẫu phần mềm độc hại tương tự trong kho lưu trữ dựa trên mẫu phần mềm độc hại đã cho Smit là phương pháp đầu tiên cho phép tìm kiếm mã nhị phân theo kiểu một-nhiều, mang lại hiệu quả cao trong việc phát hiện các mã độc tương tự.
Các phương pháp dựa trên Họcsâu
Từ năm 2010, phương pháp phát hiện sự tương đồng mã nhị phân đã gia tăng đáng kể, đặc biệt nổi bật từ năm 2015 với các phương pháp BCSD cho tìm kiếm đa kiến trúc và đa nền tảng Gần đây, các giải pháp áp dụng học máy và học sâu đã trở thành xu hướng trong lĩnh vực này.
Các phương pháp học sâu đã đóng góp quan trọng trong việc phát hiện sự tương đồng mã nhị phân ở mức độ hàm Năm 2016, Lageman và cộng sự đã phát triển một mạng để xác định xem hai hàm có được biên dịch từ cùng một mã nguồn hay không Hầu hết các phương pháp hiện nay sử dụng kỹ thuật nhúng để phân tích sự tương đồng giữa các hàm nhị phân được biên dịch cho nhiều nền tảng khác nhau như AMD64/x86-64, ARM, MIPS, hoặc từ nhiều trình biên dịch khác nhau như GCC và Clang, cùng với các kỹ thuật tối ưu hóa chéo từ O0 đến O3 Một số phương pháp còn xử lý các lệnh assembly như các từ (word).
Chương 2 COSO LY THUYẾT coi các khối cơ bản như câu (sentence) va tận dụng các kỹ thuật NLP hoặc NMT để nhúng [28] Ngoài ra, một số phương pháp sử dụng biểu diễn đồ thị để nắm bắt các đặc trưng ngữ nghĩa và mối quan hệ giữa các lệnh assembly thông qua luồng điều khiển của các hàm, đạt được nhiều kết quả mong đợi [27, 19, 25] Hơn nữa, có những phương pháp tích hợp biểu diễn dựa trên đồ thị và Mạng Nơ-ron D6 thị (GNN) để phát hiện sự tương đồng nhị phân trên các nền tảng khác nhau
Ding và cộng sự đã giới thiệu Asm2Vec, một mô hình học biểu diễn mới cho cú pháp mã assembly và đồ thị luồng điều khiển Khung đề xuất kết hợp phân tích phức tạp ngữ nghĩa từ vựng với biểu diễn vector trong các hàm assembly, giúp nắm bắt mối quan hệ giữa các đặc trưng khác nhau Sử dụng một tập dữ liệu lớn mã assembly, họ đã huấn luyện một mô hình mạng nơ-ron có khả năng nhận diện các biểu diễn tối ưu và phân biệt các hàm Nghiên cứu thực nghiệm nhấn mạnh sự mạnh mẽ của mô hình trước các kỹ thuật làm xáo trộn mã và tối ưu hóa trình biên dịch, khẳng định khả năng ứng dụng trong các tình huống thực tế.
Mô hình Gemini sử dụng mạng nơ-ron và là một trong những nghiên cứu đầu tiên về việc nhúng các hàm nhị phân Nó áp dụng mạng Siamese để huấn luyện các mô hình nhúng nhằm phát hiện sự tương đồng của mã nhị phân.
Họ trình bày các hàm nhị phân thông qua đồ thị luồng điều khiển có thuộc tính (ACFG), với các thuộc tính gắn vào từng nút để mô tả luồng thực thi Tiếp theo, họ áp dụng Structure2Vec, một mạng nhúng đồ thị đã được điều chỉnh, để mã hóa đồ thị thành các vector nhúng Tuy nhiên, phương pháp này yêu cầu định nghĩa các đặc trưng thủ công, như hằng số chuỗi và số lượng lệnh, dẫn đến việc tốn nhiều công sức và có thể gây ra thiên lệch trong các vector biểu diễn Hơn nữa, việc sử dụng cấu trúc CFG để đại diện cho các hàm cũng tiêu tốn thời gian đáng kể.
Tiếp theo, Massarelli et al [18] đã dé xuất SAFE, phương pháp của họ đại điện cho các hàm dựa trên Mạng Nơ-ron Tự Chú Ý (Self-Attentive Neural Networks).
Phương pháp này cho phép nhận diện trực tiếp các hàm nhị phân đã được dịch ngược, loại bỏ nhu cầu trích xuất đặc trưng thủ công, từ đó giảm thiểu sự phức tạp trong quá trình phân tích.
Chương 2 COSO LY THUYẾT thiên lệch chủ quan trong các vector biểu diễn và cải thiện thời gian nhúng so với phương pháp trích xuất CFG của Gemini Mặc dù vậy, mô hình SAFE sử dụng Mạng Nơ-ron hồi quy (RNN) để xử lý mã nhị phân như một chuỗi các lệnh. Trong RNNs, mỗi đầu vào được xử lý tuần tự, với đầu ra của bước trước đó được tiếp tục dùng để làm đầu vào cho bước hiện tại Quá trình xử lý tuần tự này có thể dẫn đến van dé gradient biến mat, khi đó ảnh hưởng của các đầu vào đến đầu ra của mạng giảm dan theo thời gian Điều này có nghĩa là các từ nằm càng về cuối trong chuỗi mã nhị phân có thể có tác động lớn hơn đến kết quả của mô hình so với các từ trước Vì vậy, nó không hoàn toàn hiệu quả trong việc nắm bắt ngữ nghĩa của toàn bộ hàm Để giải quyết vấn dé nay, Li et al [15] đã giới thiệu MFFA-Net dựa trên SAFE, bổ sung hai mô-đun quan trọng: Kết Hợp Dac Trưng
Mô-đun Ngữ Nghĩa (SFF) thu thập thông tin toàn cầu của các hàm qua việc kết nối các đặc trưng, trong khi mô-đun Kết Hợp Đặc Trung Chú Ý (AFF) giúp truy xuất thông tin hữu ích từ các đặc trưng khác nhau và nghiên cứu mối quan hệ giữa chúng Cơ chế chú ý trong MFFA-Net tối ưu hóa biểu diễn hàm, giảm số lượng tham số cần học, từ đó cải thiện tốc độ huấn luyện Tuy nhiên, thời gian suy luận vẫn cần được cải thiện cho mô hình này.
Phương pháp BinShot sử dụng kiến trúc học sự tương đồng dựa trên BERT với mạng nơ-ron Siamese để giải quyết van đề BCSD thông qua học một lần (one-shot learning) Bằng cách kết hợp vector khoảng cách có trọng số với hàm mất mát binary cross-entropy, BinShot được xây dựng trên nền tảng BERT Quy trình gồm hai giai đoạn: huấn luyện trước để hiểu mối quan hệ trong mã assembly và tinh chỉnh cho các nhiệm vụ BCSD Kết quả thực nghiệm cho thấy BinShot có tính hiệu quả, khả năng chuyển giao và tính thực tiễn cao, đặc biệt mạnh mẽ trong việc phát hiện sự tương đồng của các hàm chưa từng thấy trước đó.
Các nghiên cứu đã chỉ ra rằng mô hình này có hiệu quả cao trong việc so sánh sự tương đồng nhị phân qua các kịch bản thực nghiệm Tuy nhiên, mỗi mô hình vẫn tồn tại những hạn chế cần được cải thiện.
Trong chương này, chúng tôi sẽ định nghĩa bài toán so sánh tương đồng mã nhị phân và giới thiệu mô hình đề xuất cùng với giải pháp mà nhóm đã phát triển Tiếp theo, chúng tôi sẽ mô tả chi tiết các thành phần của phương pháp cũng như các phương pháp đánh giá liên quan.
Địnhnghĩa vấn để ẶẶẶQSS s 35
Phát hiện sự tương đồng mã nhị phân là một lĩnh vực nghiên cứu phức tạp, đặc biệt khi đối mặt với các thách thức như mã nhị phân đã bị làm rối Nghiên cứu này sẽ tập trung vào việc so sánh hai hàm nhị phân được trích xuất từ hai chương trình nhị phân khác nhau, nhằm làm rõ hơn về phương pháp xử lý ở cấp độ hàm.
Chúng tôi định nghĩa tương đồng nhị phân là hai hàm nhị phân ƒ1 và ƒ2 được coi là tương đồng (ký hiệu ƒ1 ~ ƒ2) nếu chúng được biên dịch từ cùng một mã nguồn nhưng với các tùy chọn biên dịch khác nhau Các cặp hàm này sẽ có đặc trưng ngữ nghĩa giống nhau, nhưng khi dịch ngược, mã hợp ngữ sẽ có sự khác biệt lớn về cấu trúc và cú pháp Điều này là do quá trình biên dịch đã phân phối mã nhị phân trên các kiến trúc khác nhau và việc sử dụng các trình biên dịch cùng với các thiết lập tối ưu hóa khác nhau.
Chương 3 PHƯƠNG PHÁP THỤC HIỆN
Các phương pháp so sánh mã nhị phân được phân loại dựa trên số lượng đầu vào và cách thức so sánh Chúng bao gồm ba loại chính: One-to-one, nơi so sánh giữa hai hàm; One-to-many, trong đó một hàm được so sánh với nhiều hàm khác; và loại thứ ba, so sánh từng hàm với tất cả các hàm còn lại.
So sánh hàm nhị phân có thể được phân loại thành ba phương pháp chính: Một-một, Một-nhiều và Nhiều-nhiều Phương pháp Một-một so sánh một hàm nhị phân gốc với một hàm nhị phân đích, nhằm xác định các thay đổi giữa hai phiên bản của cùng một chương trình, bao gồm các hàm thêm vào, xóa và sửa đổi Phương pháp Một-nhiều tìm kiếm một hàm nhị phân truy vấn với nhiều hàm nhị phân đích, giúp xác định sự tương đồng giữa các đoạn mã từ nhiều phiên bản hoặc chương trình khác nhau Cuối cùng, phương pháp Nhiều-nhiều không phân biệt giữa các đoạn nguồn và đích, thực hiện phân cụm mã nhị phân để xuất ra các nhóm hàm nhị phân tương tự, tạo thành các cụm.
Chương 3 PHƯƠNG PHÁP THỤC HIỆN
BiSimChecker - Phương pháp phát hiện sự tương đồng trong mã nhị phân dựa trên học sâu
Quá trình trích xuất hàm nhị phân
Để so sánh hai hàm nhị phân, cần có phương pháp trích xuất hàm từ tệp nhị phân Như đã đề cập trong mục 2.1.4, có nhiều công cụ decompiler hỗ trợ cho việc này Trong nghiên cứu này, chúng tôi sẽ sử dụng một trong những công cụ đó.
IDA Pro là công cụ phổ biến trong phân tích nhị phân và dịch ngược, nhờ vào sự dễ sử dụng của nó Chúng tôi đã sử dụng TDA API và phương pháp trích xuất để xác định vị trí các hàm trong tệp nhị phân, bằng cách xác định địa chỉ bắt đầu và kết thúc của từng hàm Cuối cùng, các hàm có ít nhất 5 khối cơ bản được lưu trữ trong tệp json Hình 3.2 mô tả quá trình trích xuất hàm từ các tệp thực thi, với đầu ra là các hàm được lưu trữ dưới dạng json trong mỗi tệp nhị phân.
HINH 3.2: Trích xuất hàm trong tệp nhị phân
Chương 3 PHƯƠNG PHÁP THỤC HIỆN
Chúng tôi trình bày quy trình trích xuất các hàm từ một tệp nhị phân cụ thể hơn như sau:
1 Tạo IDA Databases: Đầu tiên, với đầu vào là các tệp thực thi nhị phân đã được chuẩn bị trong tập dữ liệu thu thập trong phần 4.3.1, chúng tôi thực hiện tao IDA Databases (IDBs) để tạo ra các IDB tương ứng và file log cho quá trình này Mục tiêu của bước này là để gọi API của IDA Pro phân tích các tệp nhị phân Sau khi phân tích, IDA Pro tạo ra các tệp IDB chứa thông tin chi tiết về mã nhị phân, bao gồm các thông tin về disassembly của các hàm, biến, câu trúc dữ liệu, và những thông tin khác nhau về mã máy Những tệp IDB này cần thiết cho việc xem xét và phân tích mã nhị phân ở các bước sau này.
2 IDA FlowChart: mục tiêu của bước này là trích xuất thông tin về các khối cơ bản từ mỗi hàm trong các tập tin IDB, nhưng chỉ với những hàm có ít nhất năm khối cơ bản (basic blocks), lí do chúng tôi lựa chọn con số này bởi vì các hàm có ít nhất năm khối cơ bản thường phức tạp hơn và có ý nghĩa phân tích lớn hơn Ngoài ra, hàm có ít khối cơ bản có thể là các hàm đơn giản hoặc các hàm giúp việc (helper functions) có tính chất lặp lại và không đặc trưng. Giữ lại các hàm phức tạp hơn giúp loại bỏ nhiễu và tập trung vào những phần mã nhị phân có ý nghĩa hơn Thêm vào đó Các hàm với nhiều khối cơ bản thường là phần chứa nhiều thông tin quan trọng của phần mềm, chứa logic chính hoặc các thao tác quan trọng Bằng cách tập trung vào các hàm này, quá trình phân tích có thể hiệu quả hơn và kết quả đạt được sẽ có giá trị cao hơn Các hàm có ít nhất 5 khối cơ bản rong nhiều trường hợp, mục tiêu của phân tích có thể là tìm hiểu các thuật toán phức tap, logic điều khiển, hoặc các lỗ hổng bảo mật tiềm năng, chung hướng với mục tiêu đã đề ra của chúng tôi Thông tin này sau đó được xuất ra một tập tin CSV duy nhất.
3 Lưu trữ các hàm: Cuối cùng, trải qua bước tạo tập dữ liệu Quá trình này nhằm cho mục đích xử lý và trích xuất những thông tin từ các hàm bên trong tệp IDB, sau đó lọc và phân chia chúng thành các tập dữ liệu huấn luyện, kiểm tra và kiểm thử cho cho công việc huấn luyện BCSD (quá trình này sẽ được mô tả kĩ hơn trong phần 4.3.1, ngoài ra chúng tôi lưu thông tin
Chương 3 PHƯƠNG PHÁP THỤC HIỆN các hàm đã trích xuất được vào trong tệp json để lưu trữ, tận dung cho các bước sau đó.
Phương pháp Ins2Vec biến đổi hàm nhị phân sang vector
3.2.2.1 Tạo biểu dién Control Flow Graph
Mục tiêu của bước này là trích xuất các hàm nhị phân và tạo ra biểu diễn đồ thị luồng điều khiển (CFG) của chúng Đồ thị luồng điều khiển là một đồ thị có hướng với các đỉnh là các khối lệnh hợp ngữ và các cạnh biểu thị luồng thực thi Việc sử dụng CFG giúp nắm bắt rõ hơn các cấu trúc điều khiển phức tạp trong chương trình, như vòng lặp và nhánh điều kiện Phương pháp này cho phép phân tích mã nguồn hiệu quả hơn so với các biểu diễn tuyến tính hoặc dạng cây, nhờ vào khả năng mô hình hóa các mối quan hệ phức tạp trong mã nguồn, từ đó cải thiện độ chính xác và hiệu quả của việc học mô hình.
Chúng tôi ký hiệu một CFG là ¢g = (V, E), trong đó, V là tập các đỉnh và E là tập
Addr_2: mov eax, edx ' Addr_2: mov eax, edx
Addr_3: imul eax, 2 ' Addr_3: imul eax, 2 Addr_4: mov [base+edx],eax + - ri Addr_4: mov [base+edx], eax
Addr_5: dec edx Addr_5: dec edx Addr_6: jnz Addr_2 Addr_6: jnz Addr_2 Addr_7: mov ebx, edx |
HINH 3.3: Ví dụ mã assembly x86 va CFG tương ứng.
Chương 3 PHƯƠNG PHÁP THỤC HIỆN các cạnh Để biểu diễn đồ thị này mang nhiều thông tin ngữ nghĩa hơn, chúng tôi tiếp cận theo hướng trích xuất thêm ngữ nghĩa của mỗi nút trong dé thị và gắn thông tin ngữ nghĩa này vào mỗi nút tương ứng tạo thành Đồ thị luồng điều khiển thuộc tính - Attributed Control Flow Graph (ACFG).
Việc áp dụng ACFG (Attributed Control Flow Graph) trong nghiên cứu này mang lại nhiều lợi ích quan trọng, giúp nâng cao độ chính xác và hiệu quả trong việc phát hiện sự tương đồng của mã nhị phân trên nhiều nền tảng Chúng tôi sẽ trình bày chi tiết lý do cho việc sử dụng ACFG trong nghiên cứu này.
ACFG cho phép biểu diễn chi tiết các đặc điểm của các khối cơ bản trong mã nhị phân, bao gồm hằng số chuỗi, hằng số số, số lượng lệnh chuyển giao và các lệnh gọi Các thuộc tính này, cùng với khả năng tự động học của mô hình học sâu, giúp nắm bắt đầy đủ các đặc điểm quan trọng của mã hợp ngữ Điều này không chỉ tăng cường khả năng so sánh mà còn hỗ trợ nhận diện các hàm tương tự nhau trên nhiều nền tảng khác nhau.
Khả năng tương thích da trong việc phát hiện sự tương đồng mã nhị phân gặp nhiều thách thức do sự khác biệt giữa các kiến trúc phần cứng và nền tảng phần mềm ACFG (Acyclic Control Flow Graph) giúp nắm bắt các đặc điểm không phụ thuộc vào nền tảng, từ đó cho phép so sánh và phát hiện sự tương đồng một cách hiệu quả, bất chấp sự khác biệt về môi trường thực thi.
Sử dụng ACFG làm nền tảng cho các embeddings giúp đơn giản hóa quá trình so sánh các hàm nhị phân Thay vì phải đối chiếu các đồ thị phức tạp, chúng ta chỉ cần so sánh các vector số, từ đó nâng cao tốc độ và hiệu quả trong việc phát hiện sự tương đồng.
Khả năng tổng quát hóa và tính ổn định của ACFG cho phép phát hiện sự tương đồng trong cùng một bộ mã nguồn cũng như giữa các nền tảng khác nhau Các thuộc tính nổi bật của ACFG giúp mô hình học được các đặc điểm chung của mã nhị phân, từ đó đảm bảo tính ổn định và khả năng tổng quát hóa cao.
ACFG giúp cải thiện độ chính xác trong việc phát hiện nhờ khả năng nắm bắt đầy đủ các đặc điểm quan trọng của mã nhị phân.
Chương 3 PHƯƠNG PHÁP THỤC HIỆN sự tương đồng Các thuộc tính được gán cho các đỉnh trong đồ thị giúp tăng cường khả năng phân biệt giữa các hàm khác nhau, ngay cả khi có sự khác biệt nhỏ về cấu trúc hoặc nội dung.
Trước đây, mô hình Gemini đã áp dụng cách tiếp cận tương tự nhưng yêu cầu thu thập đặc trưng của từng nút một cách thủ công, điều này tốn nhiều thời gian và công sức, nhất là khi số lượng mẫu dữ liệu tăng lên, gây khó khăn trong việc mở rộng nghiên cứu Hiện nay, các phương pháp BCSD đang cố gắng giảm thiểu công sức thủ công và thiên vị con người trong quá trình học từ dữ liệu Do đó, mục tiêu của chúng tôi là phát triển mô hình Ins2Vec, có khả năng học đặc trưng ngữ nghĩa của mỗi nút một cách tự động, không cần can thiệp thủ công, nhưng vẫn đảm bảo hiệu quả trong việc phát hiện tương đồng nhị phân và duy trì hiệu suất tốt.
Hình 3.3 trình bày một đoạn mã nhị phân cùng với CFG tương ứng Chúng tôi ánh xạ các đoạn mã nhị phân thành các vấn đề tìm kiếm CFG tương đồng Khi xác định hai CFG tương đồng, điều này đồng nghĩa với việc các hàm tương ứng cũng sẽ tương đồng, và quy tắc tương tự cũng được áp dụng cho các cặp hàm không tương đồng.
3.2.2.2 Quá trình nhúng lệnh hợp ngữ
Để xây dựng đồ thị thuộc tính ACFG, chúng ta cần trích xuất các đặc trưng của từng nút thông qua mô hình Ins2Vec, như được minh họa trong hình 3.4.
Mô hình BiLSTM yêu cầu đầu vào là các vector số học, do đó, các lệnh trong các khối cơ bản cần được mã hóa thành dạng số học trước khi rút trích ngữ nghĩa Để thực hiện việc này, chúng tôi đã sử dụng mô hình Word2Vec và huấn luyện nó cho nhiệm vụ nhúng mã hợp ngữ, với hai thuật toán chính được áp dụng trong quá trình này.
Chương 3 PHƯƠNG PHÁP THỤC HIỆN
Word2vec bao gồm hai mô hình chính là Skip-gram và Continuous Bag of Words (CBOW) Skip-gram hoạt động bằng cách sử dụng lệnh hiện tại để dự đoán các lệnh xung quanh, giúp tạo ra các vector từ có chất lượng cao và nắm bắt mối quan hệ ngữ nghĩa giữa các từ Ngược lại, CBOW thường hoạt động tốt hơn trong các nhiệm vụ liên quan đến cú pháp Do đó, skip-gram phù hợp hơn với mục tiêu trích xuất ngữ nghĩa từ các khối cơ bản và giảm thiểu sự khác biệt về cú pháp giữa các hàm thực thi trên nền tảng khác nhau Chúng tôi sử dụng thuật toán skip-gram để nhúng các câu lệnh nhị phân đa nền tảng thành các vector số thông qua mạng neural, tập trung vào các lệnh hợp ngữ Mô hình skip-gram còn nổi bật với hiệu suất cao, tiết kiệm bộ nhớ và khả năng huấn luyện hiệu quả trên dataset lớn Trong quá trình huấn luyện, các câu lệnh hợp ngữ được xem như các token, bao gồm toán tử và toán hạng, thuộc các kiến trúc ARM, AMD64 và MIPS, nhằm phát triển khả năng phát hiện đa nền tảng Chi tiết về dữ liệu huấn luyện và siêu tham số sẽ được trình bày trong mục 4.3.1 Sau khi nhúng mỗi câu lệnh hợp ngữ bằng skip-gram, ta thu được tập vector tương ứng với các lệnh trong khối cơ bản.
3.2.2.3 Quá trình nhúng khối cơ bản
Addr_4: mov [base+edx], eax -————>} Skip-gram | >}
Addr_5: dec edx ' Addr_6: jnz MEM ì is = (0.30, , 0.08)
Chương 3 PHƯƠNG PHÁP THỤC HIỆN
Sau khi mã hóa các lệnh bằng skip-gram, chúng tôi phát triển kiến trúc BiLSTM để nắm bắt ngữ nghĩa của các khối cơ bản Theo nghiên cứu của chúng tôi, LSTM không thực sự hiệu quả trong việc nắm bắt ngữ nghĩa từ mã nguồn vì nó chỉ mã hóa thông tin theo tuần tự, dẫn đến việc chỉ có thể nhận diện các phụ thuộc theo hướng tiến Tuy nhiên, thứ tự của các lệnh trong mã nhị phân và hợp ngữ thường xuyên thay đổi do các yếu tố như trình biên dịch và tùy chọn tối ưu hóa Do đó, chúng tôi cho rằng BiLSTM là lựa chọn phù hợp hơn, vì nó có khả năng nắm bắt thông tin cả theo chiều tiến và chiều lùi của chuỗi lệnh, giúp cải thiện khả năng hiểu ngữ nghĩa của các khối cơ bản BiLSTM bao gồm một LSTM tiến và một LSTM lùi, cho phép nắm bắt thông tin từ cả hai phía Những lợi ích của BiLSTM đã được đề cập trong phần lý thuyết cơ sở.
Tính toán tương đồng giữahaihàm
đồng cosine chúng tôi áp dụng như trong biểu thức 3.5:
Bina ae Ta (35) similarity(A, B) = = xg |
Phương pháp đánhgiá
So sánh tương đồng One-to-one
Đối với phương pháp phân loại One-to-one, chúng tôi sẽ đánh giá hiệu suất thông qua bốn tham số chính là Accuracy, Precision, Recall và E1 Score.
Trong lĩnh vực phân loại, các chỉ số cơ bản bao gồm True Positive (TP), False Positive (FP), True Negative (TN) và False Negative (FN) True Positive (TP) xảy ra khi mô hình dự đoán chính xác một mẫu thuộc lớp tích cực và mẫu thực tế cũng thuộc lớp này Ngược lại, False Positive (FP) là khi mô hình sai lầm dự đoán một mẫu thuộc lớp tích cực, trong khi mẫu thực tế lại không thuộc lớp tích cực True Negative (TN) là trường hợp mô hình dự đoán đúng một mẫu thuộc lớp tiêu cực và mẫu thực tế cũng không thuộc lớp tích cực Cuối cùng, False Negative (FN) xảy ra khi mô hình dự đoán sai một mẫu thuộc lớp tiêu cực, nhưng mẫu thực tế lại thuộc lớp tích cực.
Trong phân tích mô hình, có ba trường hợp chính cần lưu ý: True Positive (TP) xảy ra khi mô hình dự đoán chính xác rằng một cặp chức năng là tương đồng và thực tế cũng xác nhận điều đó Ngược lại, False Positive (FP) là khi mô hình dự đoán sai rằng một cặp chức năng là tương đồng, nhưng thực tế thì không phải Cuối cùng, True Negative (TN) là khi mô hình dự đoán đúng rằng một cặp chức năng không tương đồng và thực tế cũng xác nhận điều này.
Chương 3 PHƯƠNG PHÁP THỤC HIỆN ® False Negative (FN): Mô hình dự đoán sai một cặp chức nang không tương đồng nhưng thực tế cặp chức năng đó lại là tương đồng.
Các giá trị TP, FP, TN và FN phụ thuộc vào số lượng mẫu trong dữ liệu, với TP và TN càng cao thì mô hình càng tốt, trong khi FP và FN càng thấp càng tốt Tuy nhiên, trong một số trường hợp đặc biệt, việc tăng TP có thể dẫn đến tăng FP, hoặc tăng TN có thể làm tăng FN, tùy thuộc vào yêu cầu cụ thể của bài toán Do đó, để đánh giá hiệu suất của phương pháp, cần xem xét không chỉ các chỉ số TP và TN.
FP và FN mà còn kết hợp với các chỉ số khác như sau: ¢ Accuracy (Độ chính xác): Do lường hiệu quả phân loại chính xác các lớp
(có và không có sự tương đồng) trong tổng số mẫu.
Precision (Độ chính xác dương tinh) được tính bằng công thức TP + FP + TN + FN, và chỉ số này thể hiện khả năng tránh phân loại sai các mẫu không có sự tương đồng thành có sự tương đồng.
Chi số Recall (Độ bao phủ) được sử dụng để đánh giá khả năng phát hiện chính xác tất cả các mẫu thuộc lớp tích cực, thể hiện mức độ tương đồng trong việc nhận diện.
TP+FN © F1 Score: Chi số này sé dùng để đánh giá hiệu suất tổng thé của toàn bộ mô hình phân loại, cân nhắc cả Precision và Recall.
Chương 3 PHƯƠNG PHÁP THỤC HIỆN
So sánh tương đồng One-to-.many
Trong so sánh one-to-many, thông thường sẽ được sử dụng thông qua 2 chỉ số là
Mean Reciprocal Rank (MRR) là một chỉ số quan trọng để đánh giá chất lượng của mô hình trong việc xếp hạng các hàm tương đồng MRR đo lường khả năng của mô hình trong việc xác định đúng hàm tương đồng nhất từ một danh sách được sắp xếp theo mức độ tương đồng giảm dần Giá trị của MRR được tính bằng cách lấy nghịch đảo của vị trí đầu tiên mà hàm thực sự tương đồng xuất hiện trong danh sách xếp hạng.
Trong đó, N đại diện cho số lượng các chức năng tương đồng được xếp hạng, và rank_i là vị trí của chức năng tương đồng đầu tiên trong danh sách.
Recall@1 là chỉ số đánh giá khả năng của công cụ BCSD trong việc phát hiện sự tương đồng trong mã nhị phân để xác định chính xác một chức năng tương đồng Chỉ số này được tính bằng tỷ lệ phần trăm của các chức năng thực sự tương đồng được tìm thấy ở vị trí đầu tiên trong danh sách các chức năng tương đồng được xếp hạng Đây là một yếu tố quan trọng để đảm bảo hệ thống có khả năng nhận diện chính xác các chức năng tương đồng.
R ll@1 = + › I kf, =1 3.11 eca = rank, = @ N ( fi ) ( ) ƒ¡eN
Cả hai chỉ số MRR và Recall@1 đều quan trọng trong việc đánh giá hiệu quả của hệ thống phát hiện sự tương đồng trong mã nhị phân MRR đo lường độ chính xác trong xếp hạng chức năng tương đồng, trong khi Recall@1 xác định khả năng phát hiện chính xác một chức năng tương đồng Sự kết hợp của hai chỉ số này cung cấp cái nhìn toàn diện hơn về hiệu suất của phương pháp.
HIỆN THỰC VÀ ĐÁNH GIÁ, THẢO
Trong chương này, chúng tôi sẽ chi tiết hóa cách thực hiện phương pháp đã nêu trong Chương 3, đồng thời thảo luận về việc xây dựng môi trường thực nghiệm, kịch bản và các kết quả thu được từ việc thử nghiệm công cụ.
Chúng tôi thực hiện các thực nghiệm trên môi trường máy ảo Ubuntu với 64GB
Máy ảo được cấu hình với 4 nhân CPU và RAM phù hợp, nhóm sử dụng ngôn ngữ Python cùng với môi trường ảo Anaconda để cài đặt các gói phụ thuộc cần thiết cho mô hình đề xuất và các mô hình liên quan Để trích xuất các hàm từ tập tin nhị phân, chúng tôi tận dụng API của IDA PRO 7.7 Cuối cùng, chúng tôi sẽ sử dụng thư viện để huấn luyện và đánh giá mô hình học sâu.
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN
4.1.2 Huan luyện mô hình skip-gram Đầu vào mô hình Skip-gram: Các câu lệnh hợp ngữ (assembly instructions) từ các kiến trúc ARM, AMD64 và MIPS được coi là các token Các câu lệnh này bao gồm toán tử (instruction mnemonic) và toán hang (operand) Mỗi câu lệnh được coi như một từ trung tâm, và các câu lệnh xung quanh nó trong mã assembly sẽ là các từ ngữ cảnh Ví dụ, một đoạn mã assembly phía dưới, mô hình Skip-gram sẽ học cách dự đoán các từ ngữ cảnh MOV va SUB dựa trên từ trung tâm ADD.
Nó học mối quan hệ ngữ cảnh giữa các câu lệnh assembly, từ đó tạo ra các vector nhúng để biểu diễn các câu lệnh này trong không gian vector.
Trong quá trình huấn luyện với lệnh "SUB EAX, ECX", mục tiêu là đạt được đầu ra mong muốn, bao gồm các lệnh liên quan xung quanh từ trung tâm trong mã assembly Điều này giúp học cách dự đoán các lệnh này dựa trên lệnh trung tâm, tương tự như cách mà chúng ta phân tích các từ trong một đoạn văn bản.
Kết quả của quá trình học: Kết quả là các vector nhúng (embeddings) cho các instruction và các toán hạng trong tập hợp các instruction ARM, AMD64 va MIPS.
Các vector này có khả năng biểu diễn các instruction dưới dạng số học, giúp mô hình hiểu và xử lý ngữ nghĩa cũng như ngữ cảnh của các instruction trong mã assembly Những vector nhúng này sẽ được sử dụng làm đầu vào cho mô hình BiLSTM phía sau.
Chúng tôi sẽ huấn luyện mô hình skip-gram với các tham số như kích thước embedding là 100, kích thước cửa sổ là 8 và tần suất từ là 8 (xem Bảng 4.1) Để xây dựng hai tập dữ liệu học chuyển giao trên kiến trúc MIPS, chúng tôi đã thu thập mã assembly từ nhiều hàm và sử dụng IDA PRO để dịch ngược các tệp thực thi MIPS Để tránh trùng lặp, chúng tôi đã tính toán hàm băm cho tất cả các lệnh trong mỗi hàm.
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN
BANG 4.1: Siêu tham số huấn luyện mô hình skip-gram
Kích thước nhúng | 100 Kích thước Window | 8
Tốc độ học 0.001 lệnh được cải thiện thông qua việc thay thế các toán hạng chứa vị trí bộ nhớ và giá trị ngay lập tức bằng một ký hiệu đặc biệt, giúp tối ưu hóa quá trình xử lý và nâng cao hiệu suất học tập.
Câu hỏi nghiên cứu của chúng tôi tập trung vào hai vấn dé chính. © Thứ nhất, "Mô hình Nhúng đồ thị nào là phù hợp cho việc nhúng Attributed
Bài viết này tập trung vào việc xác định mô hình nhúng đồ thị hiệu quả nhất cho ACFG, một cấu trúc quan trọng trong phân tích mã nguồn, nhằm cải thiện quá trình nhận dạng và phân tích mã nguồn Đồng thời, nó cũng so sánh hiệu suất của công cụ BiSimChecker với các phương pháp hiện có trong lĩnh vực phát hiện sự tương đồng mã nguồn nhị phân, nhằm đánh giá khả năng cạnh tranh và hiệu quả của BiSimChecker trong việc giải quyết các vấn đề liên quan đến bảo mật và tối ưu hóa mã nguồn.
Dựa trên hai câu hỏi nghiên cứu, chúng tôi triển khai hai kịch bản thực nghiệm Kịch bản đầu tiên tập trung vào việc "So sánh các mô hình nhúng đồ thị để lựa chọn mô hình nhúng phù hợp cho BiSimChecker", trong đó chúng tôi sẽ đánh giá và xác định mô hình nhúng đồ thị hiệu quả nhất cho Attributed Control Flow.
Kịch bản thứ hai của bài viết tập trung vào việc so sánh BiSimChecker với các công trình liên quan, nhằm đánh giá hiệu suất của BiSimChecker trong việc phát hiện sự tương đồng của mã nguồn nhị phân Bài viết sẽ phân tích khả năng nhận diện sự tương đồng của BiSimChecker so với các phương pháp hiện có, nhấn mạnh những ưu điểm và điểm mạnh của nó trong lĩnh vực này.
Lựa chọn Mô hình nhúng đồ thị phù hợp
Kếtquảsosánh ch 54 4.3 So sánh BiSimChecker cùng với GeminivaSAFE
Dựa trên bảng số liệu thực nghiệm cho kịch bản 1 ở Bang 4.3, mô hình Gemini kết hợp với Structure2Vec cho thấy hiệu suất vượt trội nhất so với các mô hình khác, với chỉ số AUC đạt 0.975 và độ chính xác 0.930 trên tập huấn luyện Sự khác biệt này rõ ràng hơn khi so sánh với mô hình Gemini + GCN.
0.8323, Accuracy: 0.7726) và Gemini + GAT (AUC: 0.962, Accuracy: 0.920).
Mô hình Gemini kết hợp với Structure2Vec đã đạt được chỉ số AUC 0.974 và độ chính xác 0.930, thể hiện sự vượt trội so với các mô hình khác như Gemini + GCN với AUC 0.8323 và Accuracy 0.7678, cũng như Gemini + GAT với AUC 0.961 và Accuracy 0.920.
Mô hình Gemini + Structure2Vec không chỉ thể hiện khả năng huấn luyện hiệu quả mà còn duy trì hiệu suất cao trong quá trình kiểm định.
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN
BANG 4.3: Kết quả so sánh áp dung các mô hình Nhúng đồ thị khác nhau từ mô hình Gemini
Metrics | Gemini + Structure2Vec | Gemini + GCN | Gemini + GAT
Accuracy 0.930 0.7678 0.920 này chứng tỏ tinh ổn định và khả năng tổng quát hóa tốt của mô hình Vi vay, mô hình Structure2Vec là lựa chọn phù hợp nhất cho nghiên cứu này và nhóm chúng tôi đã quyết định sử dụng mô hình này cho các bước tiếp theo.
4.3 So sánh BiSimChecker cùng với Gemini va SAFE
4.3.1 Tap dir liệu huấn luyện và đánh giá mô hình Để thực hiện đánh giá phương pháp đã xây dựng cũng như so sánh với những công trình liên quan, chúng tôi đã sử dụng hai bộ dữ liệu được giới thiệu bởi
Marcelli và cộng sự [17] trong bài khảo sát của họ về BCSD, cụ thể gọi là Dataset-
1 và Dataset-2, được thiết kế để nắm bắt độ phức tạp và sự biến đổi của phần mềm thực tế.
* Dataset-1 bao gồm bay dự án mã nguồn mở phổ biến: ClamAV, Curl, Nmap,
Bài viết này đề cập đến bốn thư viện quan trọng: OpenSSL, Unrar, Z3 và Zlib, được biên dịch bằng hai trình biên dịch GCC và Clang, với bốn phiên bản khác nhau Mỗi thư viện được xây dựng cho ba kiến trúc: x86-64, ARM và MIPS, với cả phiên bản 32 và 64 bit, cùng với năm mức tối ưu hóa O0, O1, O2, O3 và Os Dataset-2 chứa các tệp nhị phân đã được biên dịch cho các kiến trúc x86, x64, ARM 32 bit và MIPS 32 bit, sử dụng bốn mức tối ưu hóa (O0, O1, O2, O3) và GCC-7.5.
Chúng tôi chon ra các bộ dir liệu này bởi vì nó bao gồm hầu hết các thách thức khác nhau của sự tương đồng hàm nhị phân:
1 Nhiều họ trình biên dich và phiên bản (cross-compilers and versions).
2 Nhiều mức tối ưu hóa trình biên dịch (cross-optimizations).
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN
BANG 4.4: Các dự án mã nguồn mở và các tùy chọn biên dich trong
Open-source project Compilers Platforms Bitness Optimization levels
(2015 - 2021) x86-64, ARM, and MIPS 64 bit versions
BANG 4.5: Các dự án mã nguồn mở và các tùy chọn biên dich trong
Tập phát triển và tập kiểm tra (Dataset-2)
Open-source project Compilers Platforms Bitness | Optimization levels
BANG 4.6: Số lượng mẫu đữ liệu cho Train-Validation-Test
Total pairs | similar pairs | dissimilar pairs Train 80.000 40.000 40.000
3 Nhiều kiến trúc và độ dài bit (cross-platforms and bitness).
4 Phần mềm có tinh chất khác nhau, phân phối dữ liệu đa dạng.
Bằng cách sử dụng bộ dữ liệu này, chúng tôi có thể huấn luyện và đánh giá các mô hình một cách toàn diện và khách quan Chúng tôi tiến hành huấn luyện trên Dataset-1 và đánh giá trên Dataset-2 để đảm bảo khả năng xử lý hiệu quả các hàm chưa thấy, chưa được học của các công cụ BCSD trên các mẫu dữ liệu mới.
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN
BẢNG 4.7: Các đặc trưng được trích xuất thủ công trong Gemini
Sô lượng lệnh so học
So lượng con Tính trung gian
Thuộc về khối cơ bản
Thuộc về quan hệ giữa các khối
4.3.2 Tổng quan mô hình Gemini
Mô hình Gemini biểu diễn các hàm nhị phân dưới dạng đồ thị luồng điều khiển có thuộc tính (ACFG), với các thuộc tính gắn vào mỗi nút để mô tả luồng thực thi của hàm Phương pháp này sử dụng các đặc trưng thủ công, bao gồm hằng số chuỗi, số lượng lệnh và số lượng lệnh số học Trong đó, sáu đặc trưng đầu tiên liên quan đến bên trong mỗi khối cơ bản, trong khi hai đặc trưng cuối cùng cung cấp thông tin về cấu trúc của đồ thị luồng điều khiển bên trong mỗi nút.
4.3.3 Tổng quan mô hình SAFE
Mô hình SAFE nhận các hàm nhị phân đã được dịch ngược thành mã hợp mã, giúp giảm thiểu sự thiên lệch chủ quan và cải thiện thời gian nhúng so với phương pháp trích xuất CFG của Gemini Phương pháp trích xuất tự động này tương đồng với mục tiêu nghiên cứu của chúng tôi, nhưng khác biệt ở chỗ SAFE xử lý mã hợp ngữ như một chuỗi token mà không xem xét các phụ thuộc ngữ nghĩa quan trọng cho việc trích xuất ngữ nghĩa chức năng của hàm So sánh với mô hình SAFE cho phép chúng tôi đánh giá rõ hơn tác dụng của việc sử dụng biểu diễn đồ thị luồng điều khiển.
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN Để có thể đánh giá hiệu quả của mô hình trong nhiều khía cạnh, tập dữ liệu này còn chia thành các phần nhỏ bao gồm:
XO: các cặp hàm có các tối ưu hóa khác nhau, nhưng cùng trình biên dịch, phiên bản trình biên dịch và kiến trúc.
XC: các cặp hàm có trình biên dịch, phiên bản trình biên dịch và tối ưu hóa khác nhau, nhưng cùng kiến trúc và độ lớn bit.
XC+XB: các cặp hàm có trình biên dịch, phiên bản trình biên dịch, tối ưu hóa và độ lớn bit khác nhau, nhưng cùng kiến trúc.
XA: các cặp hàm có kiến trúc và độ lớn bit khác nhau, nhưng cùng trình biên dịch, phiên bản trình biên dịch và tối ưu hóa.
XA+XO: các cặp hàm có kiến trúc, độ lớn bit và tối ưu hóa khác nhau, nhưng cùng trình biên dịch và phiên bản trình biên dịch.
XM: các cặp hàm đến từ các kiến trúc, độ lớn bit, trình biên dịch, phiên bản trình biên dịch và tối ưu hóa ngẫu nhiên.
Kết quả so sánh trong bảng 4.8 cho thấy rằng hiệu quả của BiSimChecker vượt trội hơn so với hai công cụ Gemini và SAFE.
Trên tập XC, BiSimChecker có hiệu quả cao nhất với giá trị 0.8775, cao hơn đáng kể so với Gemini và SAFE.
BẢNG 4.8: So sánh hiệu quả so sánh tương đồng một-một của BiSim-
Checker với Gemini, SAFE trên tập đánh giá trong 20 epochs
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN
Addr_3: mov [base+eax],0 |_| a ¿4 = (0.22 0.62) 3 Li :
Addr_5: mov eax,ebx H ru | h - B BR
HINH 4.1: Trích xuất hàm trong tệp nhị phân s® Tương tự trên tập XC+XB, BiSimChecker lại có giá trị cao nhất 0.8765, vượt trội so với Gemini va SAFE.
* Đối với tập XA, BiSimChecker tiếp tục dẫn đầu với giá trị 0.8638, cho thay hiệu quả tốt hơn.
Tập dữ liệu XM là tập thử nghiệm khó nhất, bao gồm tất cả các tình huống so sánh tương đồng BiSimChecker đạt giá trị cao nhất 0.8659, cho thấy sự ổn định và hiệu quả vượt trội trong so sánh tương đồng một-một.
Theo các kết quả nghiên cứu, BiSimChecker cho thấy hiệu suất vượt trội hơn Gemini và SAFE trên tất cả các chỉ số XC và XC+XB.
BiSimChecker là một công cụ mạnh mẽ trong việc so sánh tương đồng một-một giữa XA và XM, giúp trả lời hiệu quả các câu hỏi nghiên cứu đã đề ra.
KÊT LUẬN VÀ HƯỚNG PHÁT
Trong chương cuối, chúng tôi tổng kết các công việc nhóm đã thực hiện, chia sẻ quan điểm cá nhân về những ưu điểm và nhược điểm của các phương pháp đã áp dụng, đồng thời đề xuất một số hướng phát triển trong tương lai.
Tổng quan mô hình Gemini
Mô hình Gemini biểu diễn các hàm nhị phân dưới dạng đồ thị luồng điều khiển có thuộc tính (ACFG), trong đó mỗi nút được gán các thuộc tính để mô tả luồng thực thi của hàm Phương pháp này sử dụng các đặc trưng thủ công, bao gồm hằng số chuỗi, số lượng lệnh và số lượng lệnh số học Sáu đặc trưng đầu tiên liên quan đến nội dung bên trong mỗi khối cơ bản, trong khi hai đặc trưng cuối cùng cung cấp thông tin về cấu trúc của đồ thị luồng điều khiển trong mỗi nút.
Tổng quanmô hình SAFE 57 43.4 Kếtquảsosánh ch 58
Mô hình SAFE nhận trực tiếp các hàm nhị phân đã được dịch ngược thành mã hợp mã, giúp giảm thiểu sự thiên lệch chủ quan trong các vector biểu diễn và cải thiện thời gian nhúng so với phương pháp trích xuất CFG của Gemini Phương pháp trích xuất đặc trưng tự động này tương đồng với mục tiêu nghiên cứu của chúng tôi Tuy nhiên, điểm khác biệt chính là SAFE xử lý mã hợp ngữ như chuỗi token mà không xem xét các phụ thuộc ngữ nghĩa, điều này rất quan trọng trong việc trích xuất ngữ nghĩa chức năng của hàm So sánh với mô hình SAFE cho phép chúng tôi đánh giá rõ hơn tác dụng của việc sử dụng biểu diễn đồ thị luồng điều khiển.
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN Để có thể đánh giá hiệu quả của mô hình trong nhiều khía cạnh, tập dữ liệu này còn chia thành các phần nhỏ bao gồm:
XO: các cặp hàm có các tối ưu hóa khác nhau, nhưng cùng trình biên dịch, phiên bản trình biên dịch và kiến trúc.
XC: các cặp hàm có trình biên dịch, phiên bản trình biên dịch và tối ưu hóa khác nhau, nhưng cùng kiến trúc và độ lớn bit.
XC+XB: các cặp hàm có trình biên dịch, phiên bản trình biên dịch, tối ưu hóa và độ lớn bit khác nhau, nhưng cùng kiến trúc.
XA: các cặp hàm có kiến trúc và độ lớn bit khác nhau, nhưng cùng trình biên dịch, phiên bản trình biên dịch và tối ưu hóa.
XA+XO: các cặp hàm có kiến trúc, độ lớn bit và tối ưu hóa khác nhau, nhưng cùng trình biên dịch và phiên bản trình biên dịch.
XM: các cặp hàm đến từ các kiến trúc, độ lớn bit, trình biên dịch, phiên bản trình biên dịch và tối ưu hóa ngẫu nhiên.
Kết quả so sánh trong bảng 4.8 cho thấy hiệu quả của công cụ BiSimChecker vượt trội hơn so với Gemini và SAFE.
Trên tập XC, BiSimChecker có hiệu quả cao nhất với giá trị 0.8775, cao hơn đáng kể so với Gemini và SAFE.
BẢNG 4.8: So sánh hiệu quả so sánh tương đồng một-một của BiSim-
Checker với Gemini, SAFE trên tập đánh giá trong 20 epochs
Chương 4 HIỆN THUC VÀ ĐÁNH GIA, THẢO LUẬN
Addr_3: mov [base+eax],0 |_| a ¿4 = (0.22 0.62) 3 Li :
Addr_5: mov eax,ebx H ru | h - B BR
HINH 4.1: Trích xuất hàm trong tệp nhị phân s® Tương tự trên tập XC+XB, BiSimChecker lại có giá trị cao nhất 0.8765, vượt trội so với Gemini va SAFE.
* Đối với tập XA, BiSimChecker tiếp tục dẫn đầu với giá trị 0.8638, cho thay hiệu quả tốt hơn.
Tập dữ liệu XM là tập thử nghiệm khó nhất, bao gồm tất cả các tình huống so sánh tương đồng BiSimChecker đạt giá trị cao nhất 0.8659, cho thấy sự ổn định và hiệu quả vượt trội trong việc so sánh tương đồng một-một.
Dựa trên các kết quả nghiên cứu, BiSimChecker cho thấy hiệu quả vượt trội hơn hẳn so với Gemini và SAFE qua tất cả các chỉ số XC và XC+XB.
BiSimChecker là một công cụ mạnh mẽ cho việc so sánh tương đồng một-một giữa XA và XM, cho phép chúng ta trả lời các câu hỏi nghiên cứu đã đề ra một cách hiệu quả.
KÊT LUẬN VÀ HƯỚNG PHÁT
Trong chương cuối cùng, chúng tôi sẽ tổng kết các công việc nhóm đã thực hiện, đồng thời chia sẻ quan điểm cá nhân về những ưu điểm và nhược điểm của các phương pháp đã áp dụng Bên cạnh đó, chúng tôi cũng sẽ đề xuất một số hướng phát triển tiềm năng cho tương lai.
Chúng tôi đã xây dựng một mô hình phát hiện tương đồng mã nhị phân, nắm bắt các nghiên cứu liên quan và hiểu rõ các thuật toán hiện đại cũng như quy trình phát triển phương pháp cho bài toán BCSD Qua đó, mô hình phát hiện tương đồng mã nhị phân đa nền tảng đã đạt được kết quả khả quan Nhóm đã tìm hiểu về các tệp thực thi và các thành phần liên quan đến phân tích nhị phân, đồng thời sử dụng các công cụ decompiler thông qua API, tích hợp việc dịch ngược và phân tích tệp thực thi vào quy trình phát triển công cụ BCSD.
Chương 5 KẾT LUẬN VÀ HƯỚNG PHAT TRIỂN e Xây dựng được phương pháp Ins2Vec, nhúng mã hợp ngữ của khối cơ bản của mỗi node trong biểu diễn dé thị luồng điều khiển Từ đó tạo thành
Biểu đồ điều khiển được gán (ACEG) tự động học đặc trưng của các khối, tạo ra biểu diễn vector đầy đủ ngữ nghĩa và chính xác Phương pháp Structure2Vec được áp dụng để chuyển đổi biểu diễn đồ thị ACFG sang vector, giúp các hàm tương đồng có các vector gần nhau hơn Hơn nữa, việc tìm hiểu và xây dựng có thể tích hợp các kiến trúc học sâu vào giải pháp.
Cuối cùng, chúng tôi đã phát triển mô hình BiSimChecker, có khả năng phát hiện sự tương đồng nhị phân giữa hai hàm nhị phân đa nền tang Qua các thực nghiệm so sánh với những nghiên cứu trước đây, BiSimChecker cho thấy hiệu suất vượt trội hơn khoảng 20.68% so với Gemini và 16.01% so với SAFE, chứng minh tiềm năng và hiệu quả trong việc so sánh tương đồng đa nén tang.
Dựa trên kết quả thực nghiệm, phương pháp của chúng tôi đã có hướng tiếp cận đúng đắn và tiềm năng cải tiến trong tương lai, nhưng vẫn tồn tại một số nhược điểm cần lưu ý Đầu tiên, khả năng phát hiện tương đồng đa nền tảng của mô hình chỉ đạt khoảng 86%, chưa đạt hiệu suất State-of-the-art Thứ hai, các phương pháp áp dụng như Skip-gram và Structure2Vec còn đơn giản, mặc dù tiết kiệm chi phí tính toán nhưng hiệu suất vẫn chưa đạt mức độ SOTA.
Mô hình BiLSTM vẫn tồn tại một số hạn chế như độ phức tạp tính toán cao, thời gian huấn luyện kéo dài và khó khăn trong việc xử lý CFG Mặc dù LSTM đã cải thiện khả năng ghi nhớ ngữ cảnh dài hơn so với RNN thông thường, BiLSTM vẫn gặp khó khăn với các chuỗi dài do vấn đề gradient vanishing/exploding và giới hạn bộ nhớ Tuy nhiên, khả năng trích xuất đặc trưng tự động của BiLSTM vẫn là một lợi thế đáng giá.
Chương 5 KẾT LUẬN VÀ HƯỚNG PHAT TRIỂN
Mặc dù nhóm đã đạt được kết quả tốt so với mục tiêu, nghiên cứu của chúng tôi vẫn còn nhiều tiềm năng để cải thiện do tài nguyên tính toán hạn chế Trong tương lai, chúng tôi sẽ thử nghiệm trên tập dữ liệu lớn hơn để mô hình có thể học hỏi nhiều hơn và nâng cao khả năng tổng quát hóa.
Việc cải thiện thuật toán cho từng mô-đun trong phương pháp là rất quan trọng, bao gồm cả việc thay thế mô hình nhúng skip-gram bằng một mô hình mới.