2013-02-09 58 views
15

Thật không may, tôi đã mất mã nguồn của một trong các ứng dụng của mình mà tôi đã làm xáo trộn bằng ProGuard.
tôi vẫn có .apk tập tin và một số tập tin cấu hình đã được tạo ra bởi ProGuard:Làm cách nào để thiết kế ngược/dịch ngược một APK Android đã bị làm mờ bằng ProGuard?

  1. dump.txt
  2. mapping.txt
  3. seeds.txt
  4. usage.txt

Tôi đã làm gì cho đến nay ?

  1. Tệp tài nguyên đã giải mã sử dụng apktool.
    Yay, tôi đã quay lại!

  2. Đã giải nén .apk tệp và chuyển đổi tệp classes.dex thành tệp .jar sử dụng dex2jar.

Nếu bây giờ tôi xem mã nguồn (tệp .jar) sử dụng JD-Gui, tôi thấy mã bị xáo trộn của tôi. Một cái gì đó như thế này:

class c { 
    TextView a; 
    TextView b; 
    TextView c; 
    TextView d; 
    CheckBox e; 
} 

protected List a(Uri[] paramArrayOfUri) { ... } 

protected void a(List paramList) { ... } 

Một số vòng lặp hơi lạ. Tôi không viết các vòng lặp vô hạn:

while (true) { 
    if (!localIterator.hasNext()) 
     return localArrayList; 
    ProviderInfo[] arrayOfProviderInfo = ((PackageInfo)localIterator.next()).providers; 
    if (arrayOfProviderInfo == null) 
     continue; 
    int i = arrayOfProviderInfo.length; 
} 

Có thể ánh xạ lại mã bị xáo trộn tới mã nguồn ban đầu của tôi bằng bất kỳ tệp .txt nào của ProGuard không? Tôi muốn xem tên biến/phương thức chữ ký của riêng mình.
Hoặc những tệp này chỉ có thể được sử dụng để theo dõi dấu vết ngăn xếp báo cáo sự cố?

Trả lời

3

Mọi thứ bạn đang tìm nằm trong tệp mapping.txt, nhưng tôi chưa bao giờ thấy một công cụ có thể đảo ngược tất cả. Một số các obfuscations Proguard thực hiện không chỉ đơn giản là đổi tên của các phương pháp và các biến vì vậy rất có thể là bạn sẽ không thể làm những gì bạn đang cố gắng để làm. retrace.jar đi kèm với Proguard tải về có thể giúp bạn có thêm một chút nhưng tôi khá chắc chắn bạn phải sử dụng với một tập tin stacktrace.