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

Khóa luận tốt nghiệp kỹ sư ngành An toàn Thông tin với đề tài "Phát hiện mã độc Android trên thiết bị bằng phương pháp học sâu" (tên tiếng Anh: On Device Based Android Malware Detection by Using Deep Learning) được thực hiện bởi sinh viên Nguyễn Anh Đức (MSSV: 17520047) và Nguyễn Phong Đại (MSSV: 17520314), dưới sự hướng dẫn của TS. Phạm Văn Hậu và TS. Nguyễn Tấn Cầm tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (hoàn thành tháng 7 năm 2021).

Lý do chọn đề tài và bối cảnh thực tiễn xuất phát từ sự bùng nổ của các thiết bị di động thông minh trong đời sống, kéo theo nguy cơ thất thoát dữ liệu nhạy cảm của người dùng cá nhân (như tài chính, ngân hàng, thông tin riêng tư). Theo số liệu từ IDC được tác giả trích dẫn, tính đến quý 3 năm 2020, hệ điều hành Android chiếm 83,8% thị phần điện thoại thông minh toàn cầu, gấp hơn 5 lần so với mức 16,2% của iOS. Do bản chất mã nguồn mở và hệ sinh thái phân mảnh giữa nhiều nhà sản xuất phần cứng, Android trở thành mục tiêu hàng đầu của các cuộc tấn công khai thác lỗ hổng và phát tán phần mềm độc hại. Thống kê từ Statista cho thấy có gần 70 triệu mẫu mã độc Android được tạo ra trong giai đoạn từ tháng 7/2013 đến tháng 3/2020, tiêu biểu là các họ mã độc mới và tinh vi như LeifAccess (hay còn gọi là Shipper).

Trái ngược với tốc độ gia tăng mã độc, các cơ chế phòng vệ trên thiết bị di động còn gặp nhiều rào cản:

  • Các phương pháp phân tích truyền thống (phân tích tĩnh, phân tích động) đòi hỏi tài nguyên tính toán lớn, cấu hình phần cứng cao, rất khó triển khai trực tiếp trên thiết bị di động vốn bị giới hạn về CPU và RAM.
  • Các giải pháp hiện hữu thường phải gửi dữ liệu về máy chủ xử lý trung gian hoặc phụ thuộc vào công cụ của bên thứ ba qua kết nối mạng, khiến thiết bị rơi vào thế bị động khi mất kết nối Internet.
  • Cơ chế bảo mật Sandbox của Android cô lập ứng dụng theo định danh người dùng (App UID) ở cả mức tiến trình và tập tin, ngăn cấm các lời gọi thực thi shell hệ thống. Giải pháp can thiệp sâu bằng cách "root" máy tiềm ẩn nguy cơ bảo mật nghiêm trọng và không phù hợp với người dùng phổ thông.

Khóa luận xác định hai mục tiêu và nhiệm vụ nghiên cứu trọng tâm:

  1. Chuyển dịch mô hình nhận diện mã độc: Đưa toàn bộ quy trình phát hiện mã độc dựa trên kiến trúc học sâu từ hệ thống máy chủ về vận hành trực tiếp, độc lập trên thiết bị di động Android (on-device execution) mà không cần gửi dữ liệu ra bên ngoài.
  2. Cải thiện khả năng xử lý trên môi trường di động: Giải quyết bài toán tài nguyên phần cứng thấp và rào cản phân quyền; tùy biến lại công cụ dịch ngược mã nguồn mở; xây dựng giải pháp trích xuất đặc trưng thuần Java để hệ thống hoạt động ổn định trên thiết bị không cần can thiệp quyền quản trị tối cao (không root máy) và không phụ thuộc kết nối Internet.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Tệp tin gói cài đặt ứng dụng Android (.apk), tập tin mã thực thi Dalvik Executable (classes.dex), tập tin cấu hình AndroidManifest.xml, chuỗi lời gọi hàm giao diện lập trình ứng dụng (API system calls) và các quyền truy cập hệ thống (Permissions).
  • Phạm vi công nghệ và không gian: Nền tảng hệ điều hành Android (hỗ trợ đến Android 11); triển khai thực nghiệm trên máy tính chủ và thiết bị di động cầm tay; định hướng mở rộng sang các thiết bị Internet vạn vật (IoT).
  • Phạm vi dữ liệu: Các mẫu mã độc và ứng dụng lành tính trong tập dữ liệu chuẩn CICMalDroid 2020.

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 học máy, kiến trúc hệ điều hành di động và các kỹ thuật tối ưu hóa mô hình nhúng:

  • Mạng nơ-ron nhân tạo (ANN) và Học sâu (Deep Learning): Ứng dụng mô hình mạng nơ-ron đa lớp với giải thuật lan truyền ngược (Backpropagation) để tự động học các biểu diễn đặc trưng phức tạp từ chuỗi API method calls trích xuất từ tệp DEX.
  • Kiến trúc hệ điều hành Android và cơ chế bảo mật: Khảo sát cấu trúc phân tầng gồm Linux Kernel, Hardware Abstraction Layer (HAL), Android Runtime (ART/Dalvik) và Application Framework. Phân tích cơ chế Application Sandboxing, nơi mỗi ứng dụng được gán một UID độc lập và chạy trong tiến trình riêng biệt để ngăn chặn việc can thiệp trái phép.
  • Cấu trúc tệp tin APK: Khai thác hai thành phần cốt lõi là classes.dex (chứa toàn bộ bytecode Java thực thi) và AndroidManifest.xml (chứa tên gói, cấu trúc thành phần và danh sách quyền hạn ứng dụng yêu cầu).
  • Kỹ thuật chọn đặc trưng (Feature Selection): Tác giả khảo sát 4 thuật toán tích hợp trong framework MalDozer gồm:
    • Variance Threshold (varthresh.py): Loại bỏ các đặc trưng có phương sai thấp hơn ngưỡng xác định (mặc định bằng 0 để bỏ các thuộc tính bất biến).
    • Select K Best (selkbest.py): Lựa chọn $K$ đặc trưng tối ưu dựa trên phân tích thống kê đơn biến.
    • L1 Sparse Learning (11.py): Giảm số chiều dữ liệu thông qua việc loại bỏ các đặc trưng thưa thớt có nhiều giá trị 0.
    • Extra Tree Classifier (tree.py): Tập hợp nhiều cây quyết định không tương quan để đánh giá tầm quan trọng của đặc trưng.
  • Phương pháp véc-tơ hóa bằng Word Embedding: Áp dụng word2vec và GloVe để biến đổi chuỗi định danh đặc trưng rời rạc thành ma trận dày đặc có kích thước $K \times A$ ($K$ là số chiều véc-tơ nhúng, $A$ là số lần gọi hàm API), giúp biểu diễn mối quan hệ ngữ nghĩa thay vì dùng véc-tơ one-hot thưa thớt.
  • Lượng tử hóa sau huấn luyện (Post-training Quantization): Sử dụng TensorFlow Lite Converter để chuyển đổi mô hình từ định dạng HDF5 (.h5) sang TensorFlow Lite (.tflite). Kỹ thuật này giảm kích thước trọng số từ dạng số thực dấu phẩy động 32-bit (float32) sang float16 hoặc số nguyên 8-bit (int8), giúp giảm dung lượng mô hình và tăng tốc độ xử lý trên CPU/bộ tăng tốc của thiết bị di động.

Khóa luận tiến hành tổng quan và so sánh phương pháp tiếp cận với các công trình liên quan:

Hệ thống nghiên cứu Phương pháp trích xuất & Mô hình Môi trường triển khai Hạn chế chính được chỉ ra
MalDozer (E. Karbab và cộng sự) Trích xuất chuỗi API method calls từ tệp DEX; phân loại bằng mạng nơ-ron học sâu. Máy chủ (Server-side) Gặp khó khăn trước kỹ thuật làm rối mã nâng cao và mã độc liên ứng dụng (inter-app); chỉ chạy trên máy chủ.
MobiDroid Kết hợp 3 loại đặc trưng: thuộc tính manifest, API calls và chuỗi opcode; dùng TensorFlow Lite. Thiết bị di động (Mobile-side) Quá trình dịch ngược APK bằng Apktool chiếm 80% tổng thời gian và phải chạy trên máy ảo Java (JVM) trên máy tính, chưa độc lập hoàn toàn trên điện thoại.
MAMADroid Dùng Soot và FlowDroid xây dựng Call Graph; mô hình hóa chuỗi API calls bằng chuỗi Markov. Máy chủ công suất cao Tốn bộ nhớ; tiền xử lý phức tạp; không xử lý được 4,6% mẫu (tương đương hơn 2.000 trên tổng số 43.940 ứng dụng kiểm thử).
Hệ thống đề xuất Kết hợp API method calls và quyền hạn (Permissions); tinh chỉnh Apktool chạy trực tiếp trên Android; mô hình TFLite. Trực tiếp trên thiết bị (On-device) Khắc phục sự phụ thuộc vào máy chủ; chạy hoàn toàn trên điện thoại Android không cần quyền root.

Nguồn dữ liệu huấn luyện và thực nghiệm: Bộ từ điển đặc trưng do nhóm tác giả xây dựng gồm 2.814 đặc trưng thông dụng (all_api_calls.txt), kết hợp danh mục khoảng 130 quyền hạn hệ thống của Android. Dữ liệu đánh giá sử dụng bộ dữ liệu mã độc CICMalDroid 2020.

Thiết kế và triển khai hệ thống trên thiết bị

Hệ thống được thiết kế theo quy trình hai phân hệ: huấn luyện trên máy chủ và thực thi phân tích trên thiết bị di động.

[Phân hệ Máy chủ (Server Side)]
Tệp APK thô -> Dịch ngược bằng Apktool -> Trích xuất API Calls & Permissions 
-> Ánh xạ từ điển (2.814 đặc trưng) -> Chọn đặc trưng bằng Select K Best 
-> Đồng nhất độ dài chuỗi (L=500) -> Word Embedding -> Huấn luyện ANN 
-> Xuất mô hình Keras (.h5) -> TFLite Converter & Quantization -> Mô hình (.tflite)

[Phân hệ Thiết bị Di động (Mobile Side)]
Tệp APK cần kiểm tra -> Tính mã băm SHA-256 (Tra cứu lịch sử quét)
-> Dịch ngược cục bộ bằng Apktool.jar tùy biến -> Đọc mã smali & AndroidManifest.xml
-> Trích xuất chuỗi đặc trưng thuần Java (Không dùng lệnh Shell)
-> Nạp vào TFLite Interpreter (Đầu vào: [1, 500]) -> Xuất kết quả phân loại: An toàn / Độc hại

Để đưa toàn bộ quy trình lên thiết bị di động mà không cần quyền root, nhóm tác giả đã giải quyết hai rào cản kỹ thuật lớn:

  1. Tùy biến công cụ dịch ngược Apktool: Apktool tiêu chuẩn được viết bằng Java để chạy trên môi trường máy ảo máy tính (JVM) và có các đoạn mã kiểm tra hệ điều hành (OSDetection.java) không tương thích với máy ảo Dalvik/ART của Android. Tác giả đã sửa đổi mã nguồn Apktool, loại bỏ hoàn toàn các chức năng biên dịch tài nguyên không cần thiết, chỉ giữ lại cơ chế giải nén AndroidManifest.xml và dịch ngược bytecode sang mã smali. Đồng thời, bổ sung cơ chế đa luồng và đóng gói lại thành thư viện lưu trữ Java (apktool.jar) để nhúng trực tiếp vào ứng dụng Android.
  2. Xây dựng thuật toán trích xuất đặc trưng thuần Java: Trên máy chủ, việc duyệt tìm chuỗi API trong các tệp smali thường dùng các câu lệnh shell script. Do cơ chế bảo mật của Android chặn người dùng phổ thông thực thi lệnh shell hệ thống, tác giả đã tự lập trình lớp FeatureExtractor.java hoàn toàn bằng Java để đọc duyệt trực tiếp cấu trúc cây thư mục và nội dung tệp smali, giải quyết triệt để rào cản phân quyền mà không làm thay đổi bản chất của giải thuật.

Cấu trúc các lớp mã nguồn chính trong ứng dụng di động:

  • FeatureExtractor.java: Đọc và trích xuất danh sách các lệnh gọi API từ các tệp .smali và các thẻ khai báo quyền từ tệp AndroidManifest.xml.
  • FileChooserFragment.java & Utils.java: Tạo giao diện và logic cho phép người dùng cấp quyền truy cập bộ nhớ ngoài (READ_EXTERNAL_STORAGE) để duyệt chọn tệp tin APK cần kiểm tra từ bộ nhớ máy hoặc Google Drive.
  • TFLiteClassifier.java: Lớp điều khiển việc khởi tạo, nạp mô hình model.tflite vào bộ nhớ và thực thi hàm suy luận (inference).
  • HashUtil.java: Tính toán giá trị băm SHA-256 của tệp APK đầu vào. Ứng dụng lưu trữ lịch sử các tệp đã phân tích; nếu tệp APK trùng khớp mã băm với mẫu đã kiểm tra trước đó, hệ thống sẽ trả ngay kết quả mà không cần dịch ngược lại, giúp tiết kiệm thời gian và pin của thiết bị.

Thông số kỹ thuật của mô hình học sâu triển khai trên di động:

  • Đầu vào (Input details): Mảng số nguyên có kích thước shape: [1, 500], kiểu dữ liệu numpy.int32 (chuỗi véc-tơ hóa chứa 500 mã định danh đặc trưng, áp dụng cơ chế đệm số 0 nếu chuỗi trích xuất ngắn hơn 500 hoặc cắt lấy 500 đặc trưng đầu tiên nếu dài hơn).
  • Đầu ra (Output details): Mảng xác suất có kích thước shape: [1, 2], kiểu dữ liệu numpy.float32, đại diện cho hai lớp nhãn phân loại: Lành tính (Negative) hoặc Độc hại (Positive). Nếu chỉ số Positive lớn hơn Negative, ứng dụng đưa ra cảnh báo mã độc cho người dùng.

Giao diện ứng dụng gồm 3 màn hình chức năng:

  • Màn hình Home: Phục vụ phân tích đơn mục tiêu. Người dùng bấm nút chọn tệp APK, hệ thống kiểm tra mã băm, kích hoạt quá trình decompile, rút trích đặc trưng, đưa vào mô hình TFLite và hiển thị kết quả phân tích.
  • Màn hình Dashboard: Quét và hiển thị toàn bộ danh sách các ứng dụng đã được cài đặt trên hệ thống để người dùng kiểm tra trạng thái an toàn tổng thể của thiết bị.
  • Màn hình Notification: Được thiết kế sẵn nhằm tiếp nhận các cảnh báo hoặc cập nhật từ máy chủ trong tương lai.

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

Chương 1: TỔNG QUAN

Chương 1 thiết lập bức tranh tổng thể về an toàn thông tin trên nền tảng di động. Tác giả dẫn chứng số liệu thị phần áp đảo của Android (83,8% vào quý 3 năm 2020) và số lượng mã độc khổng lồ (gần 70 triệu mẫu từ 2013 đến 2020). Nội dung chương phân tích chi tiết các nghiên cứu tiêu biểu gồm MalDozer, MobiDroid và MAMADroid; từ đó chỉ ra khoảng trống nghiên cứu: các giải pháp hiện nay hoặc chỉ chạy trên máy chủ, hoặc đòi hỏi thiết bị di động phải kết nối máy tính/máy chủ để dịch ngược. Chương 1 xác định hai nhiệm vụ giải quyết là dịch chuyển mô hình học sâu xuống điện thoại và tối ưu hóa xử lý nội bộ.

Chương 2: CƠ SỞ LÝ THUYẾT

Chương này hệ thống hóa các kiến thức nền tảng phục vụ nghiên cứu. Tác giả trình bày nguyên lý hoạt động của mạng nơ-ron nhân tạo (ANN), giải thuật lan truyền ngược (Backpropagation) và học sâu; kiến trúc đa tầng của hệ điều hành Android từ Linux Kernel đến Application Framework; cấu trúc bên trong của gói APK (AndroidManifest.xml, classes.dex, thư mục tài nguyên). Chương 2 làm rõ đặc trưng API system calls và đặc trưng quyền hạn (Permissions), cơ chế bảo mật Application Sandboxing dựa trên UID. Đồng thời, chương giới thiệu 4 thuật toán trích chọn đặc trưng của MalDozer, phương pháp nhúng từ Word Embedding (word2vec, GloVe) và quy trình lượng tử hóa sau huấn luyện (Post-training quantization) bằng TensorFlow Lite Converter.

Chương 3: HỆ THỐNG PHÁT HIỆN MÃ ĐỘC ANDROID TRÊN THIẾT BỊ BẰNG PHƯƠNG PHÁP HỌC SÂU

Chương 3 là phần đóng góp kỹ thuật trọng tâm của khóa luận. Tác giả trình bày chi tiết quy trình 12 bước thực hiện từ máy chủ đến thiết bị di động. Tại phân hệ máy chủ, các bước bao gồm decompile APK, trích xuất đặc trưng API và Permission, ánh xạ qua bộ từ điển 2.814 đặc trưng, chọn lọc đặc trưng quan trọng bằng Select K Best, đồng nhất kích thước chuỗi về độ dài $L$, véc-tơ hóa ngữ nghĩa và huấn luyện mô hình xuất ra tệp model.h5. Tại phân hệ di động, tác giả mô tả chi tiết phương pháp chỉnh sửa mã nguồn Apktool thành dạng thư viện apktool.jar, xây dựng các lớp Java (FeatureExtractor.java, TFLiteClassifier.java, HashUtil.java), cấu hình đầu vào [1, 500] và đầu ra [1, 2] của mô hình model.tflite, cùng thiết kế giao diện các tab Home, Dashboard và Notification.

Chương 4: THỰC NGHIỆM HỆ THỐNG ĐỀ XUẤT

Chương 4 trình bày thiết lập môi trường thực nghiệm và đánh giá hiệu năng hệ thống. Tác giả cấu hình môi trường thử nghiệm trên cả hai hệ thống: máy tính chủ huấn luyện và thiết bị di động Android thực tế. Chương này giới thiệu bộ dữ liệu chuẩn CICMalDroid 2020 và so sánh với các bộ dữ liệu khác; sử dụng ma trận nhầm lẫn (Confusion Matrix) cùng các thước đo định lượng bao gồm: Độ chính xác (Precision - P), Độ thu hồi (Recall - R), Điểm F1 (F1-Score), Tỷ lệ dương tính giả (FPR) và Tỷ lệ âm tính giả (FNR) để kiểm chứng hiệu quả phân loại của mô hình trên máy chủ và mô hình sau lượng tử hóa trên thiết bị.

Chương 5: KẾT LUẬN

Chương cuối tóm tắt lại toàn bộ kết quả nghiên cứu đã đạt được, khẳng định tính khả thi của việc triển khai mô hình học sâu phát hiện mã độc trực tiếp trên thiết bị di động mà không cần quyền root. Đồng thời, tác giả tổng kết các hạn chế kỹ thuật còn tồn đọng và đề xuất các hướng phát triển tiếp theo cho đề 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 cụ thể:

  • Xây dựng thành công bộ từ điển đặc trưng chuẩn hóa gồm 2.814 đặc trưng kết hợp giữa chuỗi lời gọi API hệ thống và các quyền truy cập tài nguyên (Permissions), phục vụ hiệu quả cho bài toán phân loại mã độc Android.
  • Tùy biến thành công mã nguồn công cụ Apktool thành thư viện Java nhúng (apktool.jar) tương thích hoàn toàn với môi trường Android Runtime (ART/Dalvik), cho phép thiết bị di động tự động dịch ngược tệp APK ngoại tuyến mà không cần máy tính hỗ trợ.
  • Thiết kế giải thuật trích xuất đặc trưng thuần Java không sử dụng lệnh shell, giải quyết bài toán kiểm tra an ninh mà không cần can thiệp quyền quản trị Superuser (không cần root máy), bảo đảm tính an toàn nguyên bản cho thiết bị người dùng.
  • Tích hợp cơ chế kiểm tra nhanh bằng mã băm SHA-256 (HashUtil.java), giúp trả về kết quả tức thì đối với các gói ứng dụng đã qua phân tích, giảm tải chu kỳ xử lý cho CPU di động.
  • Chuyển đổi và lượng tử hóa thành công mô hình học sâu MalDozer sang định dạng TensorFlow Lite (model.tflite) với đầu vào cố định 500 chiều, cho phép thực thi suy luận trực tiếp trên điện thoại thông minh với tài nguyên phần cứng giới hạn.
  • Đóng gói giải pháp thành một ứng dụng Android hoàn chỉnh với giao diện trực quan, hỗ trợ hai chế độ quét: kiểm tra đơn lẻ tệp tin cài đặt APK (Tab Home) và quét toàn bộ các ứng dụng đã cài đặt trên máy (Tab Dashboard).

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

Khóa luận ghi nhận các hạn chế kỹ thuật dựa trên phân tích thực tế:

  • Khả năng chống chịu kỹ thuật làm rối mã: Mô hình dựa trên khung MalDozer phân tích chuỗi API tĩnh nên chỉ hiệu quả với các kỹ thuật làm rối mã đơn giản. Đối với các kỹ thuật làm rối mã nâng cao hoặc các dòng mã độc liên ứng dụng (inter-app malware), mô hình gặp nhiều trở ngại trong việc nhận diện.
  • Giới hạn tài nguyên phần cứng khi dịch ngược: Dù đã tối ưu mã nguồn Apktool, quá trình decompile các tệp APK có dung lượng lớn trên các thiết bị di động có cấu hình thấp vẫn tiêu tốn thời gian và bộ nhớ RAM đáng kể.
  • Tính năng liên lạc máy chủ chưa hoàn thiện: Tab Notification trên ứng dụng di động mới dừng lại ở bước thiết kế giao diện, chưa được kết nối hoàn chỉnh với máy chủ để cập nhật các mẫu chữ ký mã độc mới theo thời gian thực.
  • Phạm vi thiết bị: Việc triển khai trên các thiết bị Internet vạn vật (IoT) mới dừng lại ở mức khảo sát kiến trúc và đề xuất định hướng, chưa có kết quả thực nghiệm chi tiết như trên điện thoại Android.

Hướng nghiên cứu tiếp được đề xuất:

  • Nâng cấp thuật toán trích xuất để phát hiện các biến thể mã độc sử dụng kỹ thuật che giấu và làm rối mã phức tạp.
  • Tối ưu hóa sâu hơn nữa thư viện apktool.jar để rút ngắn thời gian dịch ngược tệp tin APK lớn trên các thiết bị cấu hình yếu.
  • Hoàn thiện hệ thống máy chủ thông báo và phân phối bản cập nhật mô hình tự động qua tab Notification.
  • Hiện thực hóa và kiểm thử mô hình trên các thiết bị phần cứng IoT chạy hệ điều hành nhúng.

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à ứng dụng thực tiễn đố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à Công nghệ thông tin: Cung cấp tài liệu tham khảo chi tiết về quy trình phân tích tệp tin APK, trích xuất đặc trưng API/Permission và kỹ thuật phát hiện phần mềm độc hại bằng học máy.
  • Người nghiên cứu và kỹ sư phát triển Trí tuệ nhân tạo trên thiết bị di động (Edge AI / Mobile Deep Learning): Cung cấp quy trình hoàn chỉnh về việc chuyển đổi mô hình từ Keras/TensorFlow sang TensorFlow Lite, kỹ thuật lượng tử hóa sau huấn luyện (Post-training Quantization) và cách nạp mô hình vào ứng dụng di động qua TFLiteClassifier.java.
  • Kỹ sư lập trình ứng dụng Android: Phần có giá trị ứng dụng cao nhất là giải pháp chỉnh sửa mã nguồn Apktool để chạy trực tiếp trên môi trường Dalvik/ART và thuật toán duyệt tệp .smali thuần Java mà không cần đặc quyền root.

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

1. Mô hình đề xuất sử dụng những đặc trưng nào từ tập tin APK để huấn luyện mạng nơ-ron?
Mô hình kết hợp hai nhóm đặc trưng: các chuỗi lời gọi phương thức API hệ thống (API method calls) trích xuất từ tập tin mã bytecode classes.dex (thông qua mã smali) và danh sách các quyền hạn (Permissions) khai báo trong tập tin AndroidManifest.xml. Toàn bộ đặc trưng này được đối chiếu và ánh xạ với bộ từ điển gồm 2.814 đặc trưng do tác giả xây dựng.

2. Tại sao hệ thống có thể dịch ngược tệp APK trực tiếp trên điện thoại mà không cần máy tính?
Nhóm tác giả đã chỉnh sửa mã nguồn công cụ Apktool (vốn viết cho máy tính chạy trên JVM), loại bỏ các đoạn mã phụ thuộc hệ điều hành máy tính (OSDetection.java) và các chức năng xử lý tài nguyên giao diện không cần thiết. Bản tùy biến chỉ giữ lại tính năng giải nén AndroidManifest.xml cùng mã smali, hỗ trợ xử lý đa luồng và được đóng gói lại thành tệp thư viện apktool.jar tích hợp trực tiếp vào ứng dụng Android.

3. Làm thế nào ứng dụng hoạt động được trên các điện thoại Android bình thường mà không cần root máy?
Trên hệ điều hành Android, cơ chế sandbox ngăn cản ứng dụng thông thường thực thi các câu lệnh shell của Linux. Nhóm tác giả đã thay thế toàn bộ các lệnh shell script dùng trên máy chủ bằng các giải thuật đọc duyệt tệp smali và xml viết hoàn toàn bằng ngôn ngữ Java (FeatureExtractor.java), nhờ đó ứng dụng chạy độc lập trong không gian người dùng bình thường mà không đòi hỏi quyền Superuser.

4. Kích thước đầu vào và cấu trúc đầu ra của mô hình TensorFlow Lite trên thiết bị được định nghĩa như thế nào?
Mô hình TensorFlow Lite nhận đầu vào là một mảng số nguyên có kích thước cố định shape: [1, 500] thuộc kiểu numpy.int32, đại diện cho chuỗi 500 mã định danh đặc trưng đã qua chọn lọc. Đầu ra của mô hình là một mảng xác suất shape: [1, 2] thuộc kiểu numpy.float32, phản ánh hai trạng thái nhị phân: Lành tính (Negative) hoặc Độc hại (Positive).

5. Cơ chế băm SHA-256 trong ứng dụng có vai trò gì trong quá trình kiểm tra mã độc?
Khi người dùng chọn một tệp APK, lớp HashUtil.java sẽ tính toán mã băm SHA-256 của tệp và đối chiếu với lịch sử kiểm tra lưu trong bộ nhớ ứng dụng. Nếu tệp tin đã từng được phân tích trước đó, hệ thống lập tức trả về kết quả đã lưu mà không cần thực hiện lại các bước dịch ngược và rút trích đặc trưng tốn thời gian.

Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Anh Đức và Nguyễn Phong Đại đã giải quyết bài toán phát hiện mã độc Android bằng cách chuyển dịch thành công mô hình học sâu MalDozer từ máy chủ về thực thi cục bộ trên thiết bị di động. Bằng việc tùy biến công cụ dịch ngược Apktool và xây dựng giải thuật trích xuất đặc trưng thuần Java kết hợp giữa chuỗi API calls và Permissions, hệ thống cho phép phân tích tệp APK ngoại tuyến mà không yêu cầu thiết bị phải bẻ khóa (root). Công trình mang lại giải pháp phòng vệ chủ động, bảo vệ an toàn thông tin cho người dùng di động và cung cấp tài liệu tham khảo kỹ thuật giá trị trong lĩnh vực bảo mật và trí tuệ nhân tạo nhúng.