2010-08-30 32 views

Trả lời

95

Thực tế tệp APK chỉ là một kho lưu trữ zip, vì vậy bạn có thể cố đổi tên tệp thành theappname.apk.zip và giải nén nó bằng bất kỳ tiện ích nén nào (ví dụ: 7zip).

File androidmanifest.xml và các nguồn lực sẽ được trích xuất và có thể được xem trong khi mã nguồn không phải là trong gói - chỉ là biên soạn tập tin .dex ("Dalvik Executable")

+2

Trong hầu hết các bản phân phối Linux, bạn thậm chí không cần đổi tên tệp; bạn có thể chỉ cần nhấp đúp vào nó và nó sẽ mở ra với tiện ích lưu trữ tệp (zip) thích hợp, vì các tệp thường được xác định bằng [chữ ký] của chúng (thay vào đó là http://en.wikipedia.org/wiki/File_format#Magic_number) so với tiện ích mở rộng. – bmaupin

+1

Bất cứ khi nào tôi thử điều này, tôi nhận được một tệp nhị phân mà không cần bất kỳ nội dung hữu ích nào –

8

Ngoài ra còn có zzos. (Tiết lộ đầy đủ: Tôi đã viết nó). Nó chỉ giải mã các tài nguyên thực tế, chứ không phải phần dex (baksmali, mà tôi không viết, thực hiện một công việc tuyệt vời để xử lý phần đó).

Zzos ít được biết đến nhiều hơn apktool, nhưng có một số APK được xử lý tốt hơn bởi nó (và ngược lại - nhiều hơn về điều đó sau này). Chủ yếu, APK chứa các loại tài nguyên tùy chỉnh (không phải là công cụ sửa đổi) không được xử lý bởi apktool lần cuối cùng tôi kiểm tra và được xử lý bởi zzos. Ngoài ra còn có một số trường hợp với thoát rằng zzos xử lý tốt hơn.

Về mặt tiêu cực của sự vật, zzos (phiên bản hiện tại) yêu cầu một vài công cụ hỗ trợ để cài đặt. Nó được viết bằng perl (trái ngược với APKTool, được viết bằng Java), và sử dụng aapt để giải mã thực sự. Nó cũng không dịch ngược tài nguyên attrib (mà APKTool hiện).

Ý nghĩa của tên là "aapt", trình biên dịch tài nguyên của Android, đã dịch chuyển xuống một chữ cái.

7

Trong khi giải nén sẽ tiết lộ các nguồn lực, các AndroidManifest.xml sẽ được mã hóa. apktool có thể - trong số rất nhiều thứ khác - cũng giải mã tệp này.

Để giải mã các ứng dụng App.apk vào thư mục App, chạy

apktool decode App.apk App 

apktool không được bao gồm trong SDK Android chính thức, nhưng có sẵn sử dụng hầu hết các kho gói.

1

Có một decompiler trực tuyến cho gói ứng dụng android

http://www.decompileandroid.com/

Tải lên APK từ máy tính cục bộ

Đợi một số khoảnh khắc

tải mã nguồn ở định dạng zip.

Giải nén nó, bạn có thể xem tất cả tài nguyên một cách chính xác nhưng tất cả các tệp java không được biên dịch một cách chính xác.

Đối với đầy đủ chi tiết visit this answer

0

Bạn cũng có thể sử dụng Jadx - https://github.com/skylot/jadx. Tôi đã sử dụng tất cả các công cụ được đề cập trong trang này và thấy rằng Jadx hoạt động tốt nhất. Tệp kê khai và các tệp lớp khác được chuyển đổi thành định dạng có thể đọc được nhiều nhất có thể bằng công cụ này.

PS - http://www.javadecompilers.com/apk cũng sử dụng trình giải mã jadx để thực hiện cùng một công việc trực tuyến. Đơn giản hơn nếu bạn muốn hủy lưu trữ một gói ứng dụng duy nhất.

Chúc mừng!

3

Tùy thuộc vào lý do bạn muốn trích xuất APK, Trình phân tích APK có thể là đủ. Nó cho bạn thấy các thư mục và kích thước tệp. Nó cũng cho thấy số lượng phương pháp được nhóm theo gói mà bạn có thể đi sâu vào.

Trình phân tích APK được tích hợp vào Android Studio. Bạn có thể truy cập nó từ trình đơn trên cùng, Xây dựng -> Phân tích APK.

7

Nó đã được xuất xưởng với Android Studio ngay bây giờ. Chỉ cần vào xây dựng/Phân tích APK ... sau đó chọn APK của bạn :)

enter image description here

0
unzip my.apk 

sẽ làm các trick từ dòng lệnh Linux.

Các vấn đề liên quan