2013-06-03 15 views
6

Chúng tôi đang tìm cách bảo vệ mã của chúng tôi và làm xáo trộn là không đủ. Có thể biên dịch mã java Android sang thư viện Android gốc không?biên dịch Java sang Android gốc thay vì ghi trong C

Một tùy chọn khác là viết mã bằng c và kết nối với nó thông qua JNI. Nhưng mã chúng ta có khá phức tạp và được thử nghiệm tốt, viết lại c sẽ bắt đầu thử nghiệm trên tất cả.

Trân trọng, Rob.

PS: Trước khi chúng tôi chạy trên phần cứng x86 và sử dụng Excelsior Jet làm phương tiện bảo vệ. Khi chúng ta muốn chuyển sang phần cứng Arm/android rẻ hơn (rẻ hơn), chúng tôi đang tìm kiếm một giải pháp mô phỏng như Jet, mà chỉ được biên dịch cho x86.

+0

Chúng tôi viết lại nó trong C++. Nó không phải là quá phức tạp, miễn là bạn viết các bài kiểm tra đơn vị. –

+0

Ai, bạn đã có chúng tôi ở đó :). Chúng tôi có một số xét nghiệm đơn vị, nhưng không đủ. Mã đã được tối ưu hóa trong các dự án thí điểm và sản xuất trong 6 năm qua. Việc thêm các kiểm thử đơn vị vào hồi cứu có thể khá khó khăn vì nó liên quan đến việc người ta kích hoạt các cảm biến ở những khoảng thời gian không thể đoán trước được. Sẽ là một lý do tốt để viết nhiều bài kiểm tra hơn mặc dù. – bluevoid

+0

Có thực sự đáng để xem xét điều này không? Nếu bạn cần bảo vệ, hãy tìm sự bảo vệ. Đây là một cấp độ khác của obfuscation. Phụ thuộc vào những gì bạn làm và nó độc đáo như thế nào. Nhưng tôi nghĩ, nếu bạn dành thời gian để cải thiện mã của bạn và mô hình kinh doanh của bạn, nó sẽ được đầu tư tốt hơn. Hoặc chỉ tạo ra những phần quan trọng trong bản địa, phần còn lại trong Java. Bạn biết đấy, bản địa khó thực hiện gỡ lỗi và phân tích hơn. Ngay cả mã gốc cũng có thể được giải mã, nó chỉ khó hơn. Nếu nó là giá trị, nó sẽ được thực hiện. Nếu không, tại sao bạn sẽ làm điều đó? Nếu bạn cần, hãy xem xét mô hình trực tuyến nơi mã của bạn không rời khỏi tay bạn. – Pihhan

Trả lời

2

Về lý thuyết, bạn có thể sử dụng LLVM. Nó có:

Về nguyên tắc, điều này có thể làm những gì bạn cần. Tuy nhiên tôi tưởng tượng bạn cần phải phân phối (ở dạng biên dịch) rất nhiều thư viện lớp Java. Tất cả trong tất cả, nó âm thanh thực sự khó khăn. Và ai đó thực sự muốn đọc mã sẽ không có quá nhiều vấn đề với việc tháo gỡ ARM ...

+0

Điều đó nghe giống như một lựa chọn thú vị, nếu người ta có thể làm điều đó chỉ cho một phần của mã. Phụ thuộc vào cách trưởng thành cả hai bước. Bất kỳ ý tưởng làm thế nào bạn sẽ gọi mã kết quả từ java không chuyển đổi? – bluevoid

+0

Tôi sẽ chỉ cố gắng một cái gì đó như điên nếu mã Java đã được một thuật toán nghiêm ngặt không có phụ thuộc bên ngoài đáng kể. Trong trường hợp đó, chỉ cần thêm một tệp C với một chút JNI đơn giản sẽ cho phép bạn gọi vào điều này ... có lẽ! –

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