Phân tích tĩnh gói ứng dụng Android với Xem Thông Tin APK
Công cụ Xem Thông Tin APK hoạt động như một tiện ích phân tích tĩnh trực tiếp trong trình duyệt web của người dùng. Công cụ này cho phép trích xuất và hiển thị các chi tiết kỹ thuật cốt lõi của tệp APK trước khi tiến hành cài đặt trên thiết bị. Bằng cách phân tích cấu trúc tệp tin, người dùng có thể đối chiếu các thông số kỹ thuật, quyền truy cập và chứng chỉ ký của ứng dụng với các bản phát hành chính thức từ nhà phát triển mà không cần phải thực thi hay cài đặt tệp.
Quá trình xử lý dữ liệu được thực hiện cục bộ thông qua Worker trong trình duyệt của người dùng. Tệp APK không bị tải lên máy chủ bên ngoài và không được cài đặt hay chạy trên thiết bị, giúp đảm bảo tính riêng tư và an toàn cho dữ liệu.
Thông số đầu vào và giới hạn kỹ thuật
Công cụ áp dụng các quy tắc nghiêm ngặt đối với tệp tin đầu vào để đảm bảo hiệu năng và tính ổn định của trình duyệt:
- Định dạng tệp: Chỉ chấp nhận định dạng
.apkđơn lẻ. - Giới hạn dung lượng: Tối đa 500 MB. Nếu tệp vượt quá giới hạn này, hệ thống sẽ từ chối và hiển thị thông báo lỗi:
"Tệp này lớn hơn 500 MB — vượt quá giới hạn an toàn để kiểm tra trong thẻ trình duyệt.". - Số lượng tệp: Chỉ xử lý một tệp tại một thời điểm. Nếu người dùng tải lên nhiều tệp cùng lúc, công cụ chỉ phân tích tệp đầu tiên và đưa ra cảnh báo:
"Mỗi lần chỉ một tệp — đang kiểm tra tệp đầu tiên.".
Xử lý các định dạng không hỗ trợ và lỗi tệp:
- Gói tách rời (XAPK, APKM): Bị từ chối với thông báo
"Đây là gói tách rời XAPK — một vùng chứa gồm nhiều APK. Hãy giải nén APK cơ sở và kiểm tra tệp đó thay thế.". - Android App Bundle (.aab): Bị từ chối với thông báo
"Đây là một Android App Bundle (.aab) — định dạng xuất bản, không phải là một APK có thể cài đặt. Hãy kiểm tra tệp APK đã được xây dựng.". - Tệp không phải APK: Nếu không tìm thấy cấu trúc hợp lệ, hệ thống báo lỗi:
"Tệp này không giống APK: không tìm thấy tệp AndroidManifest.xml hợp lệ bên trong.". - Tệp bị hỏng: Gói bị cắt cụt hoặc lỗi cấu trúc sẽ kích hoạt thông báo:
"Gói có vẻ bị hỏng hoặc bị cắt cụt, do đó không thể đọc được nội dung bên trong.". - Lỗi đọc tệp chung: Xuất hiện thông báo
"Không thể đọc được tệp. Vui lòng chọn lại."hoặc"Kiểm tra thất bại. Vui lòng thử tệp khác."khi gặp sự cố hệ thống.
Cấu trúc báo cáo và các nhãn giao diện
Khi người dùng tương tác với vùng kéo thả hiển thị nhãn "Thả tệp APK vào đây hoặc nhấp để chọn" và "Một tệp.apk, tối đa 500 MB", công cụ sẽ chuyển đổi trạng thái liên tục từ "Đã sẵn sàng. Thả một tệp APK để kiểm tra.", "Đang đọc ‹name›…", "Đang tính toán mã băm tệp — ‹percent›%", "Đang phân tích gói…" cho đến khi hiển thị "Báo cáo đã sẵn sàng.".
Báo cáo kỹ thuật được chia thành các phần rõ rệt sau:
Yêu cầu (Yêu cầu)
Phần này hiển thị các thông số tương thích của hệ điều hành Android:
- Android tối thiểu: Hiển thị dưới dạng
Android ‹version› (API ‹level›)hoặcAPI ‹level›. - Android mục tiêu: Hiển thị dưới dạng
Android ‹version› (API ‹level›)hoặcAPI ‹level›. - SDK tối đa: Hiển thị nhãn
SDK tối đa ‹n›nếu tệp APK có khai báo giới hạn này.
Quyền (Quyền)
Liệt kê toàn bộ các quyền mà ứng dụng yêu cầu hệ điều hành cấp phép. Các quyền được sắp xếp ưu tiên với những quyền mang huy hiệu "Nguy hiểm" (Dangerous) nằm ở đầu danh sách. Đây là những quyền truy cập vào dữ liệu riêng tư của người dùng theo phân loại của Android.
Thành phần (Thành phần)
Hiển thị danh sách các thành phần khai báo trong ứng dụng, giới hạn tối đa 100 mục cho mỗi danh mục. Nếu vượt quá 100, hệ thống sẽ hiển thị nhãn +‹count› mục khác. Các thành phần bao gồm:
- Activity: Nhóm dưới mục
Activity, hiển thị nhãnđã xuất(exported) nếu thành phần đó cho phép ứng dụng khác khởi chạy. - Service: Nhóm dưới mục
Service, đi kèm nhãnđã xuấtnếu có. - Receiver: Nhóm dưới mục
Receiver, đi kèm nhãnđã xuấtnếu có. - Provider: Nhóm dưới mục
Provider, hiển thị nhãnđã xuất, thông tin định danh (authority) hoặcKhông có.
Mã gốc (Mã gốc)
Hiển thị danh sách các loại bộ xử lý (ABI) được hỗ trợ cùng số lượng thư viện liên kết tĩnh tương ứng.
Tài nguyên (Tài nguyên)
Thống kê số lượng chi tiết các tệp tài nguyên bên trong gói:
- Mật độ màn hình
- Tệp tài nguyên
- Tệp nội dung
- Tệp mã (.dex)
- Tệp trong gói
Chữ ký (Chữ ký)
Trích xuất siêu dữ liệu từ các khối chữ ký v1 (PKCS#7) và các khối ký APK (v2, v3, v3.1). Lưu ý rằng công cụ chỉ trích xuất thông tin hiển thị chứ không thực hiện xác thực mật mã học hoặc kiểm tra chuỗi tin cậy của chứng chỉ. Các trường thông tin bao gồm:
Người ký ‹n›Chủ thểĐược cấp bởiSố sê-riCó hiệu lực từCó hiệu lực đếnThuật toán chữ kýThuật toán khóa- Dấu vân tay MD5, SHA-1, và SHA-256.
- Nếu không tìm thấy chữ ký, hệ thống hiển thị:
"Không tìm thấy khối chữ ký được nhận dạng — gói có thể chưa được ký hoặc đã bị đóng gói lại.".
Mã băm tệp (Mã băm tệp)
Hiển thị các giá trị băm MD5, SHA-1, và SHA-256 của chính tệp APK được tải lên.
Người dùng có thể sử dụng nút "Tải xuống báo cáo" để lưu trữ thông tin hoặc "Xóa" để đặt lại giao diện về trạng thái ban đầu.
So sánh các định dạng phân phối ứng dụng Android
Để hiểu rõ lý do tại sao công cụ chỉ chấp nhận tệp APK đơn lẻ, cần phân biệt cấu trúc của các định dạng phân phối phổ biến hiện nay:
- Tệp APK đơn: Đây là định dạng gói ứng dụng Android tiêu chuẩn có thể cài đặt trực tiếp lên thiết bị. Công cụ hỗ trợ phân tích toàn diện định dạng này đối với các tệp có dung lượng lên đến 500 MB.
- Android App Bundle (.aab): Đây là định dạng xuất bản dùng để gửi lên cửa hàng ứng dụng, không phải là một APK có thể cài đặt trực tiếp. Để kiểm tra, người dùng cần sử dụng tệp APK đã được xây dựng từ gói này.
- Gói tách rời (XAPK, APKM): Đây là các định dạng vùng chứa gồm nhiều tệp APK nhỏ bên trong. Để phân tích bằng công cụ, người dùng cần giải nén gói và chỉ chọn tệp APK cơ sở để kiểm tra.
Câu hỏi thường gặp
Tôi có thể biết được gì từ một APK mà không cần cài đặt?
Khá nhiều thứ: tên gói và phiên bản của ứng dụng, các phiên bản Android yêu cầu, mọi quyền mà ứng dụng yêu cầu, các màn hình và thành phần chạy nền được khai báo, các loại bộ xử lý hỗ trợ mã gốc, và các chứng chỉ dùng để ký.
Công cụ này có thể cho tôi biết APK có phải mã độc hay không?
Không — và hãy hoài nghi bất kỳ công cụ nào hứa hẹn đưa ra kết luận chỉ từ một lần quét nhanh. Những gì bạn nhận được ở đây là sự thật: quyền, thành phần, người ký và mã băm. Hãy so sánh chúng với những gì nhà phát triển công bố, và coi các quyền bất ngờ hoặc chữ ký khác với bản phát hành chính thức là lý do để dừng lại.
Những tệp nào được hỗ trợ?
Tệp APK đơn có dung lượng lên đến 500 MB. Các gói tách rời (XAPK, APKM) và Android App Bundle (.aab) là định dạng vùng chứa hoặc định dạng xuất bản chứ không phải là một gói có thể cài đặt, vì vậy chúng sẽ bị từ chối bằng một thông báo rõ ràng thay vì một báo cáo gây nhầm lẫn.
Chi tiết chữ ký cho tôi biết điều gì?
Mọi ứng dụng Android đều được ký, và chứng chỉ xác định ai là người phát hành. Bạn sẽ thấy các cơ chế chữ ký mà gói hỗ trợ (v1, v2, v3) cùng với chủ thể, thời hạn hiệu lực và dấu vân tay MD5, SHA-1, SHA-256 của từng người ký. Hai APK có dấu vân tay khớp nhau xuất phát từ cùng một nhà phát triển — việc bạn có tin tưởng nhà phát triển đó hay không vẫn là quyết định của bạn.
Huy hiệu “Dangerous” trên quyền có nghĩa là gì?
Đó là phân loại của chính Android: quyền nguy hiểm có thể truy cập dữ liệu riêng tư — vị trí, danh bạ, máy ảnh, micrô, bộ nhớ — vì vậy hệ thống sẽ hỏi người dùng trước khi cấp quyền. Huy hiệu này không phải là lời buộc tội; một ứng dụng bản đồ yêu cầu quyền vị trí là điều bình thường. Nó chỉ đánh dấu những quyền đáng được đọc kỹ hai lần.