2010-08-12 30 views
6

Tôi muốn biết rằng việc biên dịch mã byte python dễ dàng đến mức nào. Tôi đã thực hiện một ứng dụng trong python có nguồn mà tôi muốn được an toàn. Tôi đang sử dụng py2exe mà về cơ bản dựa vào các tập tin biên dịch python.Có dễ dàng giải mã đầy đủ các tệp đã được biên dịch (*. Pyc) của python không?

Điều đó có bảo mật mã không?

+0

bản sao có thể có của [Làm cách nào để bảo vệ mã python?] (Http://stackoverflow.com/questions/261638/how-do-i-protect-python-code) –

+2

Ah ... Sau 3 năm, tôi nhận ra cách bảo vệ mã vô lý. Trong thực tế, trong số các ngôn ngữ phổ biến như C/C++ không tồn tại ngôn ngữ nào khác mà không thể giải mã được. – Shubham

Trả lời

6

Phụ thuộc vào định nghĩa của bạn về "hoàn toàn" (trong "hoàn toàn dịch ngược") ... ;-). Bạn sẽ không dễ dàng lấy lại mã nguồn gốc Python - nhưng nhận được bytecode dễ dàng và mô-đun thư viện chuẩn dis tồn tại chính xác để làm cho bytecode dễ đọc (mặc dù nó là vẫn là bytecode, không phải mã nguồn Python đầy đủ ;-) .

+0

Cũng có C++ decompilers quá nhưng họ chỉ là vô ích. Họ không nhận được mã nguồn ban đầu nhưng chỉ là một số hướng dẫn mức lắp ráp. SO bởi đầy đủ decompiable tôi có nghĩa là * thực sự * tạo ra * mã nguồn * thực tế. – Shubham

+0

Bạn sẽ không nhận được "mã nguồn thực". Nhận xét sẽ biến mất. Nhưng tên biến, tên phương thức, hằng số, chuỗi và tất cả logic mà bạn áp dụng cho chúng, sẽ có thể đọc được bởi một người nào đó đủ quan tâm. –

+1

@Shubham, yep, @Ned là đúng: Mã byte bytecode gần giống với nguồn Python hơn ngôn ngữ lắp ráp là nguồn C++ được tạo từ đó. Bất kỳ chuyên gia Python đáng giá muối của mình sẽ có thể tái tạo logic của nguồn chính xác từ bytecode, và không lấy mất mãi mãi về nó (không phải là thực hiện nó từ mã assembly thì khó hơn nhiều - xem phải mất bao lâu mới có "sao chép bảo vệ" chương trình ngớ ngẩn cho một trò chơi được tháo rời, hiểu và bị hỏng ... ;-). –

1

Nếu bạn tìm kiếm trực tuyến, bạn có thể tìm các trình giải mã cho mã byte bytecode của Python: có phiên bản miễn phí để tải xuống nhưng chỉ xử lý bytecode lên tới Python 2.3 và online service sẽ dịch ngược phiên bản 2.6.

Dường như không có bất kỳ phần mềm giải mã nào cho các phiên bản gần đây của bytecode Python, nhưng gần như chắc chắn chỉ vì không ai cảm thấy cần phải viết một thay vì bất kỳ khó khăn cơ bản nào với bytecode.

Một số người đã cố gắng bảo vệ mã byte bytecode bằng cách sửa đổi trình thông dịch: không có lý do cụ thể nào khiến bạn không thể biên dịch thông dịch viên của riêng bạn với các giá trị khác nhau được sử dụng cho bytecode: điều này sẽ ngăn kiểm tra mã đơn giản với import dis, nhưng sẽ không đứng lên lâu đối với bất kỳ cuộc tấn công xác định nào và tất cả đều tốn tiền mà mã đó được đưa vào cải thiện chính chương trình.

Tóm lại, nếu bạn muốn bảo vệ chương trình của mình, hãy sử dụng luật để làm điều đó: sử dụng giấy phép phần mềm thích hợp và truy tố những người bỏ qua nó. Mã là tốn kém để viết, nhưng kết quả cuối cùng hiếm khi là phần có giá trị của một gói phần mềm: dữ liệu có giá trị hơn nhiều.

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