Đối với cùng một ứng dụng, tôi có:
- một APK từ một cửa hàng ứng dụng,
- những gì được tuyên bố là mã nguồn cho cùng một phiên bản. Với một kịch bản và cấu trúc xây dựng Gradle khá thông thường.
Tôi muốn kiểm tra xem APK có thực sự được xây dựng từ mã nguồn đó hay không.
Làm thế nào để kiểm tra điều đó?
Ghi chú:
- APK không bị xáo trộn.
- Tôi không có lý do để tin tưởng chữ ký của bất cứ ai. Tôi chỉ tin tưởng mã nguồn.
- Tôi đã tự xây dựng ứng dụng cho mình, nhưng bây giờ tôi muốn biết liệu APK có ổn hay không.
- Tốt hơn là với các công cụ dòng lệnh Linux, nhưng bất kỳ công cụ nào cũng được.
diff
Phương thức này có vẻ gọn gàng ... nhưng điều gì sẽ xảy ra nếu những kẻ của cửa hàng ứng dụng làm xáo trộn APK trong khi biên dịch nó?
.apk
tệp, sau đó chạy một khác biệt so với các thư mục kết quả. Chỉ khác biệt sau đó phải là chữ ký (không thể phù hợp vì lý do rõ ràng). Suy nghĩ về nó: chỉ cần giải nén các.apk
tệp và thực hiện một nhị phân khác cũng nên làm như vậy. Cả hai tất nhiên sẽ yêu cầu phải sử dụng cùng một phiên bản thư viện, v.v. khi biên dịch ở vị trí đầu tiên :)