2009-09-03 51 views
5

Chúng tôi sẽ làm hỏng dự án của chúng tôi nhưng không muốn mất khả năng gỡ lỗi từ xa và trao đổi nóng.Gỡ lỗi mã java obfuscated

Có thể không? Công cụ nào có thể xử lý việc này? Tôi muốn được hạnh phúc với obfuscation đơn giản - chỉ cần đổi tên các lớp/phương pháp/biến.

[Đã chỉnh sửa] Chúng tôi đang sử dụng Intellij IDEA nhưng không thể tìm thấy bất kỳ plugin nào cho tác vụ này.

Trả lời

5

Chúng tôi có cùng một loại nhu cầu (đơn giản obfuscation, cần gỡ lỗi sau) và chúng tôi sử dụng ProGuard. Nó là một ứng dụng Java, có thể được tích hợp trong một nhiệm vụ Ant.

Nó có thể làm được nhiều thứ, nhưng nó cũng hoàn toàn có thể điều chỉnh được. Vì vậy, bạn có thể giữ cho obfuscation của bạn đơn giản. Một trong các tùy chọn là tạo ra một "Bảng tương ứng biểu tượng", cho phép bạn truy xuất lại mã không bị làm mờ từ mã bị xáo trộn. (nó theo dõi rằng biến xyz trong lớp qksdnqd là trong thực tế myCuteVarName trong lớp MeaningfulClassName)

Edit: Obfuscation có thể phức tạp. Một số ví dụ:

  • Bạn không thể thay đổi tên của phương thức chính.
  • Bạn có sử dụng trình nạp lớp không? Nó vẫn có thể lấy lại lớp học sau khi obfuscation?
  • Điều gì về bản đồ ORM của bạn? Bối cảnh mùa xuân của bạn? (Nếu có)

Edit2: Bạn cũng có thể thấy:

+0

Vâng, tôi biết về bảng SC. Nhưng tôi và nhóm của tôi không phải là rất kinh nghiệm, người có thể dễ dàng gỡ lỗi và thay đổi mã bị xáo trộn ngay cả khi sử dụng bảng :) Vì vậy, tôi chỉ tìm kiếm một công cụ cho phép tôi gỡ lỗi mã minh bạch. – Vitaly

+0

Bạn không phải là guru, bạn cung cấp các bảng và jar obfuscated cho các ứng dụng, và họ trở thành có thể đọc được một lần nữa (trừ bình luận). Ah ... nhưng tôi không nghĩ rằng bạn có thể "hotswaping" với quá trình này (nó là loại bỏ và thay thế tất cả các jar) –

+0

Có thể tôi không hiểu điều gì đó. Tôi sẽ có thể "từng bước" gỡ lỗi từ xa mã obfuscated và xem mã "bình thường" trong cùng một thời gian trong một số loại trình gỡ lỗi (mà không có bất kỳ hành động bổ sung như nhìn vào bảng, tung ra các ứng dụng khác và vv)? – Vitaly

0

Xem SD Java Obfuscator. Nó đánh dấu các bình luận và khoảng trắng, và đổi tên tất cả các thành viên/phương thức/tên lớp không công khai.

Nó cũng cung cấp cho bạn bản đồ về cách mã bị che khuất, ví dụ, đối với mỗi biểu tượng FOO obfuscated như XYZ, một bản đồ FOO-> XYZ. Điều này có nghĩa là nếu bạn nhận được một backtrace đề cập đến XYZ, bạn có thể dễ dàng xác định biểu tượng ban đầu FOO. Tất nhiên, vì chỉ có bạn (người thực hiện obfuscation) có bản đồ này, chỉ có bạn mới có thể làm được điều này.

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