Bối cảnh và vấn đề nghiên cứu

Phát hiện sự tương đồng trong mã nhị phân (Binary Code Similarity Detection - BCSD) là bài toán nhận đầu vào là biểu diễn nhị phân của các cặp hàm hoặc chương trình và tính toán giá trị số thể hiện mức độ tương đồng giữa chúng. Kỹ thuật này đóng vai trò thiết yếu trong nhiều lĩnh vực an toàn thông tin và kỹ thuật phần mềm thực tiễn:

  • Trong an ninh mạng: Hỗ trợ phân tích mã độc và phát hiện các biến thể phần mềm độc hại được chỉnh sửa hoặc tái sử dụng từ các đoạn mã nguy hiểm đã biết trước đó.
  • Trong phân tích và bảo mật phần mềm: Hỗ trợ rà soát lỗ hổng bảo mật đã biết (CVE), phân tích các bản vá lỗi (patch analysis), phát hiện hành vi sao chép trái phép hoặc đạo văn phần mềm, cũng như tối ưu hóa mã nguồn.
  • Trong kỹ thuật dịch ngược: Giúp phục hồi mã nguồn và hỗ trợ quá trình kiểm thử phần mềm thông qua việc đối chiếu các hàm nghi ngờ với các mẫu đã được kiểm chứng.

Tuy nhiên, bài toán này đối mặt với nhiều thách thức lớn:

  • Sự đa dạng và độ phức tạp cao của các tập tin nhị phân trên nhiều hệ điều hành (Windows, Linux) và kiến trúc phần cứng khác nhau (x86, ARM, MIPS).
  • Mã nhị phân biên dịch từ cùng một mã nguồn gốc có thể biến đổi rất lớn khi sử dụng các trình biên dịch khác nhau, mức độ tối ưu hóa khác nhau (O0, O1, O2, O3, Os) hoặc các tùy chọn biên dịch khác nhau.
  • Các phương pháp truyền thống chủ yếu dựa trên so sánh cú pháp và đối sánh đồ thị luồng điều khiển (Control Flow Graph - CFG) gặp phải hai hạn chế cốt lõi: tính không ổn định (CFG dễ bị xáo trộn do tối ưu hóa đường đi hoặc do công cụ decompiler trích xuất khác nhau) và chi phí tính toán cao (việc xây dựng và so sánh đồ thị tiêu tốn nhiều thời gian và bộ nhớ).

Để giải quyết các thách thức trên, khóa luận xác định các mục tiêu, đối tượng và phạm vi nghiên cứu cụ thể:

  1. Mục tiêu nghiên cứu:
    • Sử dụng ứng dụng của học sâu để xây dựng và phát triển phương pháp phát hiện sự tương đồng trong mã nhị phân thông qua quá trình chuyển đổi các chức năng nhị phân thành vector.
  2. Đối tượng nghiên cứu:
    • Các thành phần liên quan đến tập tin nhị phân (Function, Basic block, Control Flow Graph, Strand).
    • Biểu diễn trung gian (Intermediate Representation - VEX-IR).
    • Phương pháp chuyển đổi từ bytecode sang vector: Proc2vec và phiên bản cải tiến Proc2vec+.
    • Mô hình học sâu phát hiện sự tương đồng mã nhị phân Binshoo.
  3. Phạm vi nghiên cứu:
    • Trích xuất ngữ nghĩa và thuộc tính của các chức năng nhị phân thông qua quá trình chuyển đổi các chức năng nhị phân thành vector bằng phương pháp Proc2vec cải tiến (Proc2vec+).
    • Thực hiện kết hợp và xây dựng mô hình phát hiện sự tương đồng trong mã nhị phân mới (Binshoo) dựa trên các kiến trúc học sâu đã biết.
    • Thực hiện đánh giá thực nghiệm khả năng phát hiện sự tương đồng của phương pháp trên các tập dữ liệu chuẩn.

Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng giải pháp dựa trên nền tảng lý thuyết phân tích chương trình nhị phân và các kiến trúc học sâu:

  • Thành phần mã nhị phân:
    • Chức năng (Function): Tập hợp các câu lệnh máy được biên dịch từ hàm nguồn, có ngữ nghĩa hoàn chỉnh và gắn liền với một CFG biểu diễn luồng thực thi.
    • Khối cơ bản (Basic block): Chuỗi các lệnh máy liên tiếp có một điểm vào và một điểm ra duy nhất.
    • Phân đoạn (Strand): Tập hợp các câu lệnh có liên quan chặt chẽ về dữ liệu, tạo thành chuỗi thực hiện một nhiệm vụ tính toán cụ thể bên trong khối cơ bản. Việc phân rã khối cơ bản thành các strand giúp chia nhỏ ngữ nghĩa, giảm thiểu sự sai lệch khi tính toán giá trị băm so với việc giữ nguyên toàn bộ khối.
  • Biểu diễn trung gian VEX-IR: Biểu diễn trung gian cấp thấp từ dự án Valgrind (sử dụng framework angr và thư viện pyvex). VEX-IR có tính chất độc lập kiến trúc phần cứng, chuẩn hóa các tập lệnh CPU khác nhau về một cấu trúc thống nhất là IRSB (IR Super Block), bao gồm các câu lệnh IRStmt (như WrTmp, Put Register, Store Memory, Exit) và biểu thức IRExpr (như Constant, RdTmp, Get Register, Load Memory, Operation, ITE).
  • Công cụ dịch ngược: Khóa luận sử dụng IDA Pro cùng IDA Python API để tự động hóa việc mở file thực thi, định vị địa chỉ bắt đầu - kết thúc của các hàm và trích xuất bytecode.
  • Lý thuyết học máy và học sâu: Áp dụng các khái niệm về mạng nơ-ron đa lớp, quá trình lan truyền thuận (forward propagation), lan truyền ngược (backpropagation), các hàm kích hoạt (ReLU, Leaky ReLU, Sigmoid, Tanh, Softmax), hàm mất mát (Cross-Entropy, Categorical Cross-Entropy), và ma trận nhầm lẫn (Confusion Matrix). Tác giả tổng hợp các kiến trúc nền tảng gồm CNN, RNN (LSTM, GRU), Siamese Neural Network, GAN và các mô hình lai kết hợp CNN với RNN/LSTM/GRU.
  • Phương pháp nghiên cứu thực nghiệm: Phân tích tĩnh kết hợp tối ưu hóa mã trung gian, mã hóa đặc trưng bằng hàm băm MD5, xây dựng cặp vector huấn luyện và đánh giá trên mô hình mạng Siamese.
  • Nguồn dữ liệu: Sử dụng bộ dữ liệu chuẩn BinaryCorp (gồm BinaryCorp-3M và BinaryCorp-26M) với các thông số trích xuất được tác giả thống kê như sau:
Bộ dữ liệu Tập dữ liệu Số lượng dự án Số lượng tệp nhị phân Số lượng hàm
BinaryCorp-3M Train 1.612 8.357 3.126.367
BinaryCorp-3M Test 354 1.908 444.574
BinaryCorp-26M Train 7.845 38.455 21.085.338
BinaryCorp-26M Test 1.974 9.675 4.791.673

Thiết kế và triển khai phương pháp Binshoo

Hệ thống Binshoo được thiết kế nhằm tự động hóa quy trình từ mã nhị phân thô đến kết quả đánh giá độ tương đồng, chia thành ba giai đoạn chính:

1. Trích xuất hàm và chuyển đổi trung gian

Sử dụng IDA Pro kết hợp IDA Python API để đọc tệp nhị phân mục tiêu, xác định ranh giới các hàm và trích xuất chuỗi bytecode. Chuỗi bytecode của từng hàm được chuyển đổi sang biểu diễn trung gian VEX-IR bằng thư viện pyvex nhằm loại bỏ sự phụ thuộc vào kiến trúc phần cứng gốc.

2. Phương pháp Proc2vec+ (Chuyển đổi bytecode thành vector)

Phương pháp Proc2vec+ được phát triển dựa trên nguyên mẫu Proc2vec của Zeek, bổ sung thêm các kỹ thuật tối ưu hóa mã tĩnh. Quy trình gồm các bước:

  • Trích xuất Strand: Áp dụng thuật toán phân tích phụ thuộc dữ liệu định nghĩa - sử dụng (Def-Ref). Thuật toán duyệt qua danh sách các câu lệnh trong khối cơ bản, xác định các biến cần thiết (needed = Def(bb[i]) ∩ used) để gom nhóm thành các strand hoàn chỉnh.
  • Tối ưu hóa mã VEX-IR:
    • Copy propagation: Loại bỏ các phép gán biến trung gian không cần thiết. Thao tác này chỉ áp dụng khi câu lệnh thỏa mãn đồng thời: độ dài dưới 10 ký tự, chứa đúng 2 biến (1 biến định nghĩa def và 1 biến tham chiếu ref).
    • Dead code elimination: Loại bỏ các câu lệnh rác không làm thay đổi ngữ nghĩa hoặc không ảnh hưởng đến trạng thái cuối cùng của hàm.
    • Normalize: Đặt lại tên các biến tạm thời do VEX-IR sinh ra (t0, t1, t2,...) theo thứ tự xuất hiện tuyến tính để chuẩn hóa cú pháp giữa các hàm tương đồng.
    • Inlining: Thay thế lời gọi hàm bằng nội dung mã thực tế của hàm con nhằm tối ưu không gian thanh ghi và ngữ cảnh thực thi.
    • Constant Folding: Tính toán trước giá trị của các phép toán trên hằng số ngay trong giai đoạn tiền xử lý thay vì chờ lúc thực thi.
  • Vector hóa: Từng strand sau khi chuẩn hóa được băm bằng thuật toán MD5 để tạo ra các giá trị số nguyên. Duyệt qua danh sách số nguyên này để tăng trọng số tại vị trí chỉ số tương ứng trong vector đặc trưng của hàm.

3. Mô hình học sâu Siamese Neural Network và phương pháp đánh giá

  • Tạo tập dữ liệu cặp vector:
    • Cặp tương đồng (nhãn 1): Hai vector trích xuất từ hai hàm nhị phân có cùng mã nguồn gốc nhưng biên dịch ở các cờ tối ưu hóa khác nhau.
    • Cặp không tương đồng (nhãn 0): Hai vector trích xuất từ hai hàm có mã nguồn gốc khác nhau.
  • Kiến trúc mô hình: Sử dụng kiến trúc Siamese Neural Network gồm các nhánh mạng con đồng nhất tiếp nhận cặp vector đầu vào, trích xuất đặc trưng bậc cao và tính toán điểm tương đồng thông qua hàm mất mát chuyên biệt.
  • Cơ chế đánh giá:
    • Bài toán One-to-one: Đánh giá khả năng phân loại nhị phân giữa hai hàm dựa trên ma trận nhầm lẫn (True Positive - TP, False Positive - FP, True Negative - TN, False Negative - FN).
    • Bài toán One-to-many: Với một hàm nguồn, mô hình xếp hạng danh sách các hàm đích trong một nhóm (pool) theo độ tương đồng giảm dần. Đánh giá chất lượng xếp hạng thông qua hai chỉ số: Mean Reciprocal Rank (MRR) và tỷ lệ xếp hạng chính xác ở vị trí đầu tiên (Recall@1).

Nội dung chính theo từng chương

Chương 1. Tổng quan

  • Giới thiệu bản chất bài toán phát hiện sự tương đồng mã nhị phân và tầm quan trọng trong an ninh thông tin.
  • Tổng hợp và phân tích ưu - nhược điểm của các công trình tiền nhiệm:
    • Order Matters (Zeping Yu và cộng sự): Kết hợp mô hình ngôn ngữ BERT và mạng đồ thị GNN, dùng CNN trên ma trận kề nhưng tiêu tốn tài nguyên tính toán lớn do kích thước tham số của BERT.
    • Zeek (Shalev và cộng sự): Sử dụng biểu diễn VEX-IR, phân tích luồng dữ liệu và mạng nơ-ron hai lớp, vượt trội hơn công cụ GitZ về tốc độ và hiệu quả.
    • SAFE (Luca và cộng sự): Ứng dụng kỹ thuật xử lý ngôn ngữ tự nhiên để so sánh mã nhị phân liên kiến trúc.
    • BinDeep (Donghai Tian và cộng sự, 2020): Mô hình kết hợp CNN và LSTM dưới dạng mạng Siamese, sử dụng nhúng chuỗi lệnh và phân loại hàm trước khi so sánh.
    • jTrans / kTrans (Hao Wang và cộng sự, 2022): Điều chỉnh kiến trúc Transformer để tích hợp thông tin luồng điều khiển CFG.
  • Xác định mục tiêu, đối tượng, phạm vi nghiên cứu và bố cục tổng thể của khóa luận.

Chương 2. Cơ sở lý thuyết

  • Phân tích chi tiết các khái niệm nền tảng trong tệp nhị phân: Function, Basic block, Control Flow Graph (CFG) và Strand.
  • Trình bày vai trò và ứng dụng của công cụ dịch ngược IDA Pro cùng giao diện lập trình IDA Python API trong việc phân tích ngược và trích xuất thông tin tệp thực thi.
  • Giới thiệu cấu trúc của ngôn ngữ trung gian VEX-IR: Cấu trúc khối IRSB, bảng phân loại các biểu thức IRExpr (Constant, RdTmp, Get, Load, Operation, ITE, Helper Function) và các câu lệnh IRStmt (WrTmp, Put, Store, Exit).
  • Trình bày hệ thống lý thuyết học sâu: Cấu trúc các lớp mạng (Input, Hidden, Output), các hiện tượng Overfitting và Underfitting, thuật toán lan truyền thuận và lan truyền ngược, các hàm kích hoạt (Sigmoid, Tanh, ReLU, Leaky ReLU, Softmax), hàm mất mát (Cross-Entropy), các siêu tham số (Batch size, Epoch) và ma trận nhầm lẫn.
  • Khảo sát các kiến trúc mạng nơ-ron: CNN, RNN, LSTM, Siamese Neural Network, GAN và mô hình lai kết hợp CNN - RNN.
  • Nêu các ứng dụng thực tiễn của bài toán BCSD: Phân tích mã độc, phát hiện đạo văn phần mềm, phục hồi mã nguồn và kiểm thử bảo mật.

Chương 3. Tổng quan về Binshoo

  • Định nghĩa ba dạng bài toán phát hiện tương đồng: One-to-one (so sánh từng cặp hàm), One-to-many (tìm hàm nguồn trong tập hàm đích) và Many-to-many (phân cụm nhiều hàm). Khóa luận tập trung trực tiếp vào bài toán One-to-one và One-to-many.
  • Trình bày kiến trúc tổng thể của công cụ Binshoo và quy trình trích xuất hàm tự động bằng IDA Pro.
  • Chi tiết hóa phương pháp trích xuất Strand dựa trên phân tích tập biến định nghĩa - sử dụng qua mã giả thuật toán.
  • Thiết kế phương pháp Proc2vec+ với 5 kỹ thuật tối ưu hóa mã trung gian: Copy propagation (với điều kiện ràng buộc cụ thể), Dead code elimination, Normalize biến tạm, Inlining và Constant Folding.
  • Thiết kế quy trình mã hóa strand thành vector thông qua hàm băm MD5 và xây dựng kiến trúc mạng Siamese Neural Network để tính toán điểm tương đồng.
  • Trình bày công thức và phương pháp đánh giá thực nghiệm bằng Confusion Matrix (TP, FP, TN, FN), MRR và Recall@1.

Chương 4. Thí nghiệm và đánh giá

  • Thiết lập môi trường thực nghiệm và định cấu hình các siêu tham số cho các mô hình học sâu.
  • Trình bày quy trình chuẩn bị tập dữ liệu huấn luyện và kiểm thử từ các dự án nhị phân được biên dịch với các mức tối ưu hóa khác nhau.
  • Thực hiện chuỗi thực nghiệm so sánh đa chiều:
    • Đánh giá hiệu quả cải tiến của phương pháp Proc2vec+ so với nguyên mẫu Proc2vec của Zeek.
    • So sánh độ chính xác và hiệu năng của mô hình Binshoo với các kiến trúc học sâu đơn lẻ và kết hợp: CNN, LSTM, CNN+GRU, CNN+LSTM và mô hình nguyên bản của Zeek.
    • So sánh hiệu quả giữa mô hình học sâu của Binshoo và mô hình dựa trên Transformer là BERT (đánh giá trên kịch bản One-to-many với kích thước tập đích poolsize = 10).
    • So sánh tổng thể công cụ Binshoo với công cụ học sâu BinDeep (đánh giá trên kịch bản One-to-many với kích thước tập đích poolsize = 10).
    • Phân tích chi tiết ma trận nhầm lẫn (Confusion Matrix) với 4 chỉ số TP, FP, TN, FN của mô hình Binshoo.

Chương 5. Kết luận

  • Tổng kết các kết quả đạt được của khóa luận trong việc xây dựng phương pháp Proc2vec+ và công cụ Binshoo.
  • Đề xuất các hướng phát triển tiếp theo của đề tài.

Kết quả và đóng góp

Khóa luận đạt được các kết quả kỹ thuật và đóng góp học thuật cụ thể:

  • Đóng góp về phương pháp luận tiền xử lý: Cải tiến thành công phương pháp biểu diễn mã nhị phân Proc2vec thành Proc2vec+ thông qua việc tích hợp hai kỹ thuật tối ưu hóa mã trung gian là Inlining và Constant Folding, kết hợp chặt chẽ với Copy propagation, Dead code elimination và Normalize. Việc chuyển đổi qua VEX-IR và phân rã thành đơn vị Strand giúp hạn chế tối đa việc hiểu sai ngữ nghĩa do sự khác biệt nhỏ ở mức lệnh.
  • Tự động hóa quy trình phân tích: Xây dựng quy trình tự động hoàn chỉnh từ khâu trích xuất bytecode bằng IDA Python API, xử lý trung gian VEX-IR bằng thư viện pyvex, mã hóa vector bằng hàm băm MD5 cho đến tạo cặp dữ liệu huấn luyện.
  • Đóng góp về mô hình học máy: Thiết kế và huấn luyện thành công mô hình mạng học sâu Binshoo dựa trên kiến trúc mạng Siamese, cho phép tính toán độ tương đồng giữa các hàm nhị phân biên dịch từ các mức tối ưu hóa khác nhau.
  • Kết quả thực nghiệm đối sánh:
    • Chứng minh sự vượt trội của phương pháp biểu diễn Proc2vec+ so với phương pháp gốc Proc2vec của Zeek.
    • So sánh thực nghiệm chi tiết giữa Binshoo với các kiến trúc CNN, LSTM, CNN+GRU, CNN+LSTM và Zeek, chứng minh tính hiệu quả của cấu trúc mạng đề xuất.
    • Đánh giá khả năng xếp hạng One-to-many (poolsize = 10) đối chiếu trực tiếp với mô hình BERT và công cụ BinDeep, xác thực khả năng ứng dụng thực tế của công cụ.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và nội dung văn bản khóa luận:

  • Hạn chế:
    • Phương pháp phân tích hoàn toàn dựa trên kỹ thuật phân tích tĩnh thông qua dịch ngược sang VEX-IR, phụ thuộc vào chất lượng trích xuất ranh giới hàm của công cụ IDA Pro.
    • Mô hình học sâu chủ yếu tập trung vào phân loại nhị phân cặp hàm (One-to-one) và giải quyết bài toán One-to-many ở quy mô nhóm hàm cố định (poolsize = 10), chưa mở rộng đánh giá ở các kịch bản không gian tìm kiếm cực lớn.
    • Quá trình chuyển đổi và tối ưu hóa VEX-IR trên các tệp nhị phân có kích thước rất lớn vẫn tiêu tốn thời gian xử lý ban đầu.
  • Hướng phát triển:
    • Mở rộng phạm vi đánh giá trên nhiều kiến trúc vi xử lý khác nhau (MIPS, ARM) và các trình biên dịch khác nhau ngoài các tập mẫu hiện tại.
    • Tối ưu hóa hiệu năng tính toán của thuật toán trích xuất strand và quy trình chuẩn hóa VEX-IR nhằm tăng tốc độ xử lý đối với các phần mềm quy mô lớn.
    • Nghiên cứu mở rộng khả năng giải quyết toàn diện bài toán Many-to-many trên các kho mã nhị phân lớn phục vụ phát hiện mã độc quy mô công nghiệp.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị học thuật và kỹ thuật đối với:

  • Sinh viên, học viên chuyên ngành An toàn thông tin, Mạng máy tính và Kỹ thuật phần mềm: Cung cấp tài liệu thực tế về phương pháp áp dụng học sâu vào an toàn thông tin, đặc biệt là kỹ thuật trích xuất ngữ nghĩa mã máy.
  • Người nghiên cứu về kỹ thuật dịch ngược (Reverse Engineering) và phân tích mã độc (Malware Analysis): Cung cấp hướng dẫn chi tiết về việc sử dụng IDA Python API để tự động hóa IDA Pro, cách thức hoạt động của biểu diễn trung gian VEX-IR và thuật toán trích xuất strand từ khối cơ bản.
  • Các nhà nghiên cứu phát triển mô hình BCSD: Giá trị tham khảo nằm ở phương pháp tối ưu hóa tĩnh Proc2vec+ (Copy propagation, Dead code elimination, Normalize, Inlining, Constant folding) kết hợp hàm băm MD5 và kiến trúc mạng Siamese Neural Network trong bài toán so sánh độ tương đồng.

Câu hỏi thường gặp

1. Tại sao tác giả lại sử dụng đơn vị "Strand" thay vì giữ nguyên "Basic Block" khi trích xuất ngữ nghĩa mã nhị phân?

Tác giả đánh giá Basic Block là đơn vị chưa đủ nhỏ để phản ánh ngữ nghĩa chi tiết. Nếu sử dụng cả Basic Block, chỉ một thay đổi nhỏ của một câu lệnh bên trong (do tối ưu hóa biên dịch) cũng sẽ làm thay đổi hoàn toàn giá trị băm MD5 của toàn bộ khối, khiến mô hình hiểu sai ngữ nghĩa. Khi chia nhỏ Basic Block thành các Strand (tập hợp các câu lệnh có quan hệ phụ thuộc dữ liệu trực tiếp), ngữ nghĩa chỉ bị thay đổi cục bộ ở một strand nhỏ chứa câu lệnh đó, giúp bảo toàn tính tương đồng ngữ nghĩa của phần còn lại.

2. Kỹ thuật Proc2vec+ có điểm gì cải tiến so với phương pháp Proc2vec nguyên mẫu của Zeek?

Proc2vec+ kế thừa nền tảng của Zeek (chuyển đổi bytecode sang VEX-IR, trích xuất strand và dùng hàm băm MD5), nhưng được bổ sung thêm hai kỹ thuật tối ưu hóa mã quan trọng là Inlining (thay thế lời gọi hàm bằng nội dung hàm) và Constant Folding (tính toán trước các giá trị hằng số ngay lúc biên dịch/phân tích). Ngoài ra, quy trình còn kết hợp chặt chẽ với Copy propagation, Dead code elimination và Normalize để giảm thiểu nhiễu và làm sạch mã trung gian trước khi vector hóa.

3. Kỹ thuật Copy propagation trong giai đoạn xử lý VEX-IR đòi hỏi những điều kiện cụ thể nào để được áp dụng?

Theo quy định thuật toán trong khóa luận, một câu lệnh VEX-IR chỉ được thực hiện Copy propagation khi thỏa mãn đồng thời ba điều kiện nghiêm ngặt:

  • Câu lệnh phải có độ dài nhỏ hơn 10 ký tự.
  • Câu lệnh phải chứa chính xác 2 biến.
  • Biến thứ nhất phải là biến được định nghĩa (def - biến được gán giá trị) và biến thứ hai phải là biến tham chiếu (ref - biến cung cấp giá trị sử dụng).

4. Khóa luận phân loại bài toán phát hiện sự tương đồng mã nhị phân thành những dạng nào và mô hình Binshoo giải quyết dạng nào?

Khóa luận chia bài toán thành ba dạng: One-to-one (tính điểm tương đồng giữa hai hàm bất kỳ), One-to-many (tìm và xếp hạng hàm tương đồng nhất từ một tập hợp hàm đích) và Many-to-many (phân cụm nhiều nhóm hàm). Mô hình Binshoo được huấn luyện chính trên bài toán One-to-one, đồng thời mở rộng để giải quyết hiệu quả bài toán One-to-many bằng cách so sánh hàm nguồn lần lượt với từng hàm trong nhóm đích rồi xếp hạng.

5. Trong chương thí nghiệm, Binshoo được đối sánh với các mô hình và công cụ cụ thể nào?

Khóa luận thực hiện đối sánh Binshoo với:

  • Phương pháp trích xuất vector: So sánh Proc2vec+ với Proc2vec của Zeek.
  • Các kiến trúc học sâu cơ sở: CNN, LSTM, CNN+GRU, CNN+LSTM và mô hình hai lớp nơ-ron của Zeek.
  • Mô hình ngôn ngữ lớn dựa trên Transformer: So sánh với BERT (trên bài toán One-to-many với poolsize = 10).
  • Công cụ học sâu chuyên dụng: So sánh với công cụ BinDeep của Donghai Tian và cộng sự (cũng trên kịch bản poolsize = 10).

Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Phúc Hải đã nghiên cứu và phát triển thành công giải pháp phát hiện sự tương đồng trong mã nhị phân mang tên Binshoo, giải quyết các hạn chế về tính không ổn định và chi phí tính toán của các phương pháp CFG truyền thống. Đề tài đóng góp phương pháp biểu diễn mã trung gian cải tiến Proc2vec+, kết hợp ngôn ngữ VEX-IR, kỹ thuật phân đoạn Strand, các phép tối ưu hóa mã tĩnh và hàm băm MD5 để vector hóa ngữ nghĩa hàm nhị phân. Thông qua kiến trúc mạng Siamese Neural Network và các thực nghiệm đối sánh toàn diện với Zeek, BERT, BinDeep cùng nhiều mô hình nơ-ron khác trên bộ dữ liệu BinaryCorp, công trình đã chứng minh tính khả thi, hiệu quả kỹ thuật và giá trị ứng dụng cao trong phân tích mã độc và an toàn phần mềm.