Lấy mã nguồn từ tệp .apk? [đóng cửa]


21

Có tệp .apk, có cách nào để tôi có thể lấy mã nguồn không?


7
Trước đó, bạn đã kiểm tra xem gói có phải là nguồn mở không?
ott--

Một .apk chỉ đơn giản là một tệp .zip. Nhưng thật không may, bất kỳ bản dựng ứng dụng nào cho 'phát hành' có thể sẽ được ProGuard bảo vệ .
Daniel López

@MatthewRead Op hỏi anh ta có thể lấy mã từ api không, và tôi đã trả lời hiện tượng này được gọi là gì và cách ít nhất là ngăn chặn việc tạo một ứng dụng tương tự. Anh ta không nói làm thế nào để ngăn chặn việc lấy mã. Vì vậy, nó trả lời câu hỏi.
Con người

Câu trả lời:



11

Nếu bạn gặp may mắn và .apktệp của bạn không được Proguard hoặc analog bảo vệ , bạn có thể sử dụng công cụ APK . Nó là một công cụ cho các ứng dụng Android thứ ba, đóng, nhị phân.


Apktool chỉ tạo Mã Smali, không phải mã Java - đó là một sự khác biệt lớn.
Robert

2

Từ một trong những wiki hài của Parnkul Garg trong SO :


Quy trình giải mã tập tin .apk, phương pháp từng bước:

Bước 1:

  1. Tạo một thư mục mới và sao chép tập tin .apk mà bạn muốn giải mã.

  2. Bây giờ đổi tên phần mở rộng của tệp .apk này thành .zip (ví dụ: đổi tên từ filename.apk thành filename.zip) và lưu nó. Bây giờ bạn có thể truy cập các tệp class.dex, v.v ... Ở giai đoạn này, bạn có thể thấy các tệp drawable nhưng không phải các tệp xml và java, vì vậy hãy tiếp tục.

Bước 2:

  1. Bây giờ giải nén tệp .zip này trong cùng một thư mục (hoặc NEW FOLDER).

  2. Tải xuống dex2jar và giải nén nó vào cùng một thư mục (hoặc NEW FOLDER).

  3. Di chuyển tệp class.dex vào thư mục dex2jar.

  4. Bây giờ hãy mở dấu nhắc lệnh và thay đổi thư mục vào thư mục đó (hoặc NEW FOLDER). Sau đó viết d2j-dex2jar classes.dexvà nhấn enter. Bây giờ bạn có tệp class.dex.dex2jar trong cùng một thư mục.

  5. Tải xuống trình dịch ngược java , nhấp đúp chuột vào jd-gui, nhấp vào tệp đang mở và mở tệp class.dex.dex2jar từ thư mục đó: bây giờ bạn có được các tệp lớp.

  6. Lưu tất cả các tệp lớp này (Trong jd-gui, nhấp vào Tệp -> Lưu tất cả các nguồn) bằng tên src. Ở giai đoạn này, bạn nhận được nguồn java nhưng các tệp .xml vẫn không thể đọc được, vì vậy hãy tiếp tục.

Bước 3:

Bây giờ hãy mở một thư mục mới

  1. Đặt vào tệp .apk mà bạn muốn giải mã

  2. Tải về phiên bản mới nhất của apktool apktool cài đặt cửa sổ (cả hai có thể được tải về từ liên kết giống nhau) và đặt chúng trong cùng một thư mục

  3. Tải xuống framework-res.apk và đặt nó vào cùng một thư mục (Không phải tất cả các tệp apk đều cần tệp này, nhưng nó không bị tổn thương)

  4. Mở một cửa sổ lệnh

  5. Điều hướng đến thư mục gốc của APKtool và gõ lệnh sau: apktool if framework-res.apk

  6. apktool d myApp.apk (trong đó myApp.apk biểu thị tên tệp mà bạn muốn giải mã)

bây giờ bạn có một thư mục tệp trong thư mục đó và có thể dễ dàng đọc các tệp xml của apk.

Bước 4:

Đây không phải là bất kỳ bước nào chỉ sao chép nội dung của cả hai thư mục (trong trường hợp này là cả thư mục mới) sang một thư mục duy nhất

và tận hưởng mã nguồn ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.