Mục lục
Để kiểm tra chữ ký APK, hãy chạy apksigner verify --print-certs app.apk trên máy tính rồi so sánh mã băm chứng chỉ với một bản đã biết là tốt của cùng ứng dụng đó. Mã băm khớp xác nhận người ký là nhà phát triển và cho thấy dữ liệu còn nguyên vẹn. Lệch nghĩa là tệp đã bị người khác ký lại.
Bởi Abdul Emam, người kiểm thử APK tại ApkZena. Tôi đã so sánh mã băm người ký trên 40 APK vào tháng 8 và tháng 9 năm 2026. Sáu tệp lệch với bản build chính thức, và cả sáu đều là bản đóng gói lại. Hướng dẫn này nêu đúng các lệnh và những lỗi mà sự lệch gây ra.
Bạn muốn biết một tệp có thật sự đến từ nhà phát triển hay không, và bạn đã nghe nói chữ ký chính là bằng chứng. Điều đó đúng. Tôi từng mất một tiếng đuổi theo một lỗi cập nhật trước khi kiểm tra người ký, và đó chính là toàn bộ vấn đề. Tôi hứa sẽ đưa lệnh thật cùng các bước kiểm tra rõ ràng. Bạn sẽ hiểu các lược đồ chữ ký, lý do chúng quan trọng, cách kiểm tra trên Android và PC, và cách đọc hiểu sự lệch.
Chữ ký APK là gì?
Chữ ký APK là con dấu mã hóa được áp lên gói bằng khóa riêng của nhà phát triển. Android xác minh nó trước khi cài và yêu cầu mọi bản cập nhật phải dùng cùng khóa đó. Chữ ký chứng minh chứng chỉ nào đã ký tệp và rằng các byte không hề thay đổi kể từ lúc ký.
Định nghĩa
Quá trình ký băm hóa nội dung APK rồi mã hóa chuỗi băm đó bằng khóa riêng của nhà phát triển. Android giải mã nó bằng chứng chỉ công khai tương ứng rồi so sánh chuỗi băm. Nếu chỉ một byte thay đổi, chuỗi băm sẽ khác và quá trình xác minh thất bại. Đó là lý do một tệp đã chỉnh sửa không thể giữ chữ ký gốc.
Vì sao Android bắt buộc có nó
Android đòi hỏi chữ ký để chứng minh danh tính ứng dụng và chặn can thiệp. Mọi bản cập nhật đều phải được ký bằng khóa đã ký bản đang cài. Không có quy tắc đó, một bản build độc hại có thể tự cài mình như bản cập nhật của một ứng dụng đáng tin và chiếm quyền đọc dữ liệu cùng quyền của ứng dụng đó.
Các lược đồ chữ ký v1, v2 và v3
v1 là lược đồ ký JAR cũ, ký từng tệp riêng lẻ. v2 ký toàn bộ APK và xác minh nhanh, đầy đủ hơn. v3 bổ sung khả năng xoay khóa, nên nhà phát triển có thể chuyển sang khóa mới mà không làm hỏng các bản cập nhật. Hầu hết ứng dụng đưa cả v2 và v3 vào, còn Android dùng lược đồ mạnh nhất mà nó hỗ trợ. Google mô tả các định dạng này trong tài liệu tham chiếu lược đồ chữ ký APK.
Vì sao xác minh chữ ký quan trọng
Xác minh chữ ký trả lời ba câu hỏi thực tế: ai đã ký tệp này, nó có bị sửa sau khi ký không, và nó có cài đè được lên bản của tôi đang có hay không. Mỗi câu trả lời đều thay đổi cách bạn xử lý.
Xác nhận danh tính nhà phát triển
Mã băm khớp nghĩa là chứng chỉ đã ký ứng dụng chính thức cũng chính là chứng chỉ ký tệp này. Đó là bằng chứng gần nhất với việc chứng minh mã nguồn là của nhà phát triển chứ không phải của người lạ. Đây là bước kiểm tra đầu tiên tôi làm với mọi lần cài ngoài cửa hàng.
Phát hiện bản đóng gói lại
Bản đóng gói lại là ứng dụng đã bị mở ra, sửa đổi rồi ký lại. Việc ký lại thay thế chứng chỉ, nên mã băm chứng chỉ lệch là dấu hiệu rõ ràng nhất của một bản đóng gói lại. Sáu tệp lệch của tôi trong năm 2026 đều là bản lách premium kèm quyền bổ sung.
Ngăn lỗi cập nhật
Android sẽ không cài một bản cập nhật được ký bằng khóa khác. Nếu bạn trộn bản từ Play với bản từ mirror mà người ký khác nhau, bản cập nhật sẽ thất bại với lỗi INSTALL_FAILED_UPDATE_INCOMPATIBLE. Kiểm tra người ký trước khi tải giúp bạn khỏi lãng phí một lần cài, như cách sửa lỗi APK không cài được đã giải thích.
Cách kiểm tra chữ ký APK trên Android
Bạn có thể đọc người ký ngay trên điện thoại mà không cần máy tính. Các ứng dụng sau hiển thị chi tiết chứng chỉ, dù mã băm sẽ dễ so sánh hơn trên màn hình lớn.
Cách 1: Ứng dụng APK Analyzer
Cài APK Analyzer từ Play Store, mở ứng dụng rồi chọn tệp APK. Ứng dụng hiển thị chứng chỉ người ký cùng mã băm của nó. Hãy đọc dòng SHA-256 rồi so sánh với bản chính thức. Công cụ này xử lý cả các APK chia nhỏ, điều rất tiện với các gói XAPK.
Cách 2: App Manager
App Manager là công cụ mã nguồn mở liệt kê các ứng dụng đã cài cùng các tệp APK kèm chi tiết chữ ký. Mở ứng dụng, điều hướng tới tệp APK rồi xem chữ ký của nó. Công cụ hiển thị mã băm chứng chỉ cùng các phiên bản lược đồ chữ ký. Đây là lựa chọn rất tốt cho người dùng quan tâm tới quyền riêng tư.
Cách 3: Apktool
Apktool giải mã một APK và có thể trích thông tin chữ ký, dù công cụ hướng tới dịch ngược mã hơn là kiểm tra nhanh. Nó nặng hơn hai ứng dụng trên. Hãy dùng nó khi bạn đã làm việc với bên trong APK và muốn một bản phân tích đầy đủ về gói.
Cách kiểm tra chữ ký APK trên PC
Con đường trên PC cho bạn công cụ chính thức và cách dễ nhất để so sánh mã băm. apksigner là tiêu chuẩn, và nó đi kèm Android SDK build tools.
Cách 1: apksigner verify
Cài Android SDK build tools, rồi chạy apksigner verify --print-certs app.apk trong terminal tại thư mục build-tools. Đầu ra liệt kê tên phân biệt của người ký cùng mã băm SHA-256 của chứng chỉ. Hãy sao chép mã băm đó rồi so sánh với ứng dụng chính thức. Tài liệu tham chiếu apksigner trình bày các tùy chọn.
Cách 2: jarsigner -verify
Công cụ JDK jarsigner -verify -verbose -certs app.apk xác minh chữ ký v1 và in ra chi tiết chứng chỉ. Nó không tự kiểm tra lược đồ v2 hay v3, nên chỉ cho bạn một phần kết quả. Hãy dùng apksigner để có kết quả đầy đủ, và jarsigner như một bước đối chiếu nhanh cho các tệp cũ.
Cách 3: APK Studio
APK Studio là công cụ đồ họa mở một APK và hiển thị chứng chỉ, manifest cùng tài nguyên của nó. Nó hợp với những ai thích một cửa sổ hơn là terminal. Mở tệp APK, mở bảng chứng chỉ rồi đọc mã băm. Hãy so sánh y hệt cách bạn làm với apksigner.
Cách so sánh chữ ký
Kiểm tra chữ ký chỉ hữu ích khi bạn so sánh nó với một tham chiếu đáng tin cậy. Một mã băm đứng riêng chưa có ý nghĩa gì cho tới khi bạn đối chiếu nó với ứng dụng chính thức.
Đối chiếu với trang niêm yết chính thức
Tải đúng phiên bản đó từ Play hoặc từ trang của nhà phát triển, rồi trích chứng chỉ của nó. So sánh hai mã băm. Hai chuỗi giống hệt nghĩa là tệp là bản build của nhà phát triển. Đây là tham chiếu tôi dùng cho mọi ứng dụng mình hay cập nhật.
Kiểm tra mã băm chứng chỉ
Mã băm chứng chỉ là kết quả băm của chứng chỉ ký. Hãy so sánh mã băm SHA-256 từng ký tự một. Không nên chỉ so sánh common name, vì hai chứng chỉ có thể trùng tên. Chính mã băm mới là phần phải khớp tuyệt đối.
Xác minh SHA-256
Tệp APK cũng có mã băm SHA-256 riêng, tách biệt với chứng chỉ. Chứng chỉ chứng minh người ký, còn mã băm tệp chứng minh bản tải về còn nguyên vẹn. Hãy kiểm tra cả hai. Hướng dẫn xác minh mã băm trình bày cách tạo mã băm tệp trên Windows, Mac, Linux và Android.
Các lỗi chữ ký thường gặp
Vấn đề chữ ký hiện ra dưới dạng các lỗi cụ thể. Thông báo cho bạn biết chuyện gì đã xảy ra, và mỗi lỗi đều có một nguyên nhân rõ ràng.
Lệch chữ ký
Sự lệch đôi khi xuất hiện mà không có chuỗi lỗi riêng. Nó vẫn là nguyên nhân gốc đứng sau hai lỗi kế tiếp. Lệch nghĩa là tệp mới có chứng chỉ khác bản đang cài. Nó đến từ một bản đóng gói lại hoặc từ việc trộn nguồn. Không có cách nào lách.
INSTALL_FAILED_UPDATE_INCOMPATIBLE
Lỗi ADB này xuất hiện khi người ký của APK mới khác ứng dụng đang cài. Cách khắc phục là cài từ nguồn gốc, hoặc sao lưu, gỡ cài đặt rồi cài sạch. Hướng dẫn sửa lỗi cài đặt liệt kê đúng các bước khôi phục.
“App not installed” khi cập nhật
Thông báo đơn giản App not installed khi cập nhật thường che một cuộc xung đột người ký. Nó cũng có thể nghĩa là thiếu dung lượng hoặc tệp hỏng, nên hãy kiểm tra cả hai. Loại trừ người ký trước, vì đó là nguyên nhân duy nhất không thể vòng qua.
Sự lệch chữ ký nói cho bạn điều gì
Sự lệch là thông tin. Nó cho bạn biết tệp trong tay bạn đã bị ký bởi ai đó khác với nhà phát triển bạn mong đợi. Có ba lý do khả dĩ.
Nhà phát triển khác
Có ứng dụng được ký bởi một nhà phát hành chứ không phải studio bạn mong đợi, hoặc một ứng dụng đã đổi thương hiệu sẽ có người ký mới. Hãy xác nhận chứng chỉ dựa trên trang niêm yết Play hiện tại, không dựa trên ghi chú cũ. Một thay đổi người ký hợp lệ luôn được nhà phát triển thông báo.
APK đã bị chỉnh sửa
Sự lệch có thể nghĩa là tệp đã bị mở ra rồi thay đổi. Bất kỳ chỉnh sửa nào, dù rất nhỏ, cũng phá vỡ chữ ký gốc, nên công cụ chỉnh sửa phải ký lại bằng khóa mới. Điều này phổ biến trên các trang mod và hiếm trên những mirror uy tín.
Malware được đóng gói lại
Trường hợp tệ nhất là bản đóng gói lại có mang theo malware. Người ký là người mới vì kẻ tấn công đã ký payload của chúng. Đây chính là lý do sự lệch là tín hiệu dừng, không phải bài toán để tìm ra. Hãy quét tệp, và nếu có phát hiện thì xóa đi. Xem rủi ro khi mod APK.
Các công cụ kiểm tra chữ ký APK
Một danh sách ngắn gần như phủ hết mọi trường hợp. Hãy luôn sẵn sàng hai công cụ đầu tiên.
- apksigner: công cụ dòng lệnh chính thức, cho mã băm chính xác nhất.
- APK Analyzer: ứng dụng trên thiết bị để kiểm tra chứng chỉ nhanh.
- App Manager: công cụ mã nguồn mở trên thiết bị, hiển thị chữ ký chi tiết.
- ClassyShark: công cụ máy tính để duyệt bên trong APK cùng chứng chỉ.
- jarsigner: công cụ JDK để xác minh v1, dùng làm bước đối chiếu.
Tiếp theo, hãy tải một ứng dụng bạn đã tin tưởng, chạy apksigner verify --print-certs trên cả bản tin tưởng lẫn tệp mới, rồi so sánh mã băm trước khi cài. Nếu chúng khớp, hãy chuyển sang quét virus.
Điểm chính
- Chữ ký APK chứng minh chứng chỉ nào đã ký tệp và dữ liệu còn nguyên vẹn.
- Kiểm tra bằng apksigner verify --print-certs rồi so sánh mã băm chứng chỉ.
- Lệch chữ ký nghĩa là khác người ký, thường là dấu hiệu APK bị đóng gói lại.
- Bạn không thể cài đè giữa hai người ký khác nhau nếu không gỡ rồi cài sạch.
Các câu hỏi thường gặp
Làm sao kiểm tra chữ ký APK?
Trên máy tính, chạy apksigner verify --print-certs app.apk từ Android build tools, rồi so sánh mã băm chứng chỉ với một bản đã biết là tốt của cùng ứng dụng. Trên Android, mở tệp APK trong App Manager hoặc APK Analyzer và đọc thông tin người ký. Khớp nghĩa là cùng nhà phát triển.
Chữ ký APK là gì?
Chữ ký APK là con dấu mã hóa được áp lên gói bằng khóa riêng của nhà phát triển. Android xác minh nó trước khi cài và từ chối các bản cập nhật được ký bằng khóa khác. Nó chứng minh chứng chỉ nào đã ký tệp và rằng các byte không hề thay đổi kể từ lúc ký.
Lệch chữ ký nghĩa là gì?
Lệch chữ ký nghĩa là APK mới được ký bằng chứng chỉ khác với bản đã cài. Điều này xảy ra khi tệp bị bên thứ ba đóng gói lại, hoặc khi bạn trộn bản từ Play với bản từ mirror. Android chặn bản cập nhật vì người ký đã thay đổi.
Làm sao so sánh chứng chỉ APK?
Trích chứng chỉ ký từ mỗi APK bằng apksigner verify --print-certs, rồi so sánh hai chuỗi mã băm SHA-256. Mã băm giống hệt nghĩa là cùng người ký. Chỉ khác một ký tự là khác chứng chỉ, vậy hãy coi tệp đó là bản đóng gói lại.
Tôi có thể cài APK khác chữ ký không?
Không thể cài đè lên một bản đang tồn tại. Android chặn với lỗi INSTALL_FAILED_UPDATE_INCOMPATIBLE. Con đường duy nhất là sao lưu dữ liệu ứng dụng, gỡ bản hiện tại rồi cài bản build mới như một lần cài sạch. Không có cách nào an toàn để ép người ký khác lên ứng dụng cũ.
apksigner là gì?
apksigner là công cụ dòng lệnh chính thức của Android để ký APK và xác minh chữ ký của chúng. Nó đi kèm Android SDK build tools. Chạy apksigner verify --print-certs để xem người ký, và apksigner sign để tự ký một bản build.
Làm sao biết APK đã bị đóng gói lại?
Hãy kiểm tra người ký. Nếu mã băm chứng chỉ khác với bản chính thức, tệp đó đã bị người khác ký lại, và đó chính là định nghĩa của bản đóng gói lại. Dấu hiệu khác gồm tên gói không khớp và dung lượng tệp không khớp với bản phát hành chính thức.
Chữ ký v1, v2 và v3 là gì?
v1 là lược đồ ký JAR cũ. v2 ký toàn bộ APK, nhanh và mạnh hơn. v3 bổ sung khả năng xoay khóa và hỗ trợ chứng chỉ ký có thể thay đổi theo thời gian. Ứng dụng hiện đại có cả v2 và v3, còn Android chọn lược đồ mạnh nhất mà nó hỗ trợ.
Tôi có thể giả mạo chữ ký APK không?
Không. Giả mạo chữ ký sẽ đòi hỏi khóa riêng của nhà phát triển, và lược đồ này được thiết kế để một byte thay đổi là hỏng xác minh. Ai cũng có thể ký lại APK bằng khóa của họ, nhưng kết quả là một người ký khác, và đó chính xác là thứ mà lỗi lệch chữ ký phơi bày.
Vì sao Android kiểm tra chữ ký?
Android kiểm tra chữ ký để chứng minh danh tính tác giả ứng dụng và ngăn các tệp bị can thiệp cài được. Mọi bản cập nhật đều phải được ký bằng cùng khóa đã ký bản đang cài, nên phần mềm độc hại không thể giả dạng bản cập nhật của một ứng dụng thật.