Câu trả lời:
Uncompyle6 hoạt động cho Python 3.x và 2.7 - tùy chọn được đề xuất là công cụ gần đây nhất, nhằm mục đích thống nhất các nhánh trước đó và tập trung vào kiểm tra đơn vị tự động. Các trang GitHub có thêm chi tiết.
Uncompyle2 cũ hơn chỉ hỗ trợ Python 2.7. Điều này đã làm việc tốt với tôi một thời gian trước đây để dịch ngược mã byte .pyc thành .py, trong khi unpyclib bị lỗi với một ngoại lệ.
Với tất cả các công cụ này, bạn lấy lại mã của mình bao gồm tên biến, nhưng không có nhận xét.
Vâng, bạn có thể lấy nó với unpyclib
cái đó có thể tìm thấy trên pypi .
$ pip install unpyclib
Hơn bạn có thể dịch ngược tệp .pyc của bạn
$ python -m unpyclib.application -Dq path/to/file.pyc
print __copyright
- tại sao nó lại sử dụng phiên bản Python 2.7 print
mà không có dấu ngoặc đơn?
unpyclib
phát hành đầu tiên và cuối cùng của @DavidChing là vào năm 2009 , có thể nói đây là chương trình chỉ dành cho Python 2.
Bạn có thể thử Easy Python Decompiler . Nó dựa trên Decompyle ++ và Uncompyle2. Nó hỗ trợ dịch ngược các phiên bản python 1.0-3.3
Lưu ý: Tôi là tác giả của công cụ trên.
Decompyle ++ (pycdc) là người duy nhất làm việc cho tôi: https://github.com/zrax/pycdc
đã được đề xuất trong dịch ngược Python 2.7 .pyc
Có .
Tôi sử dụng uncompyle6 dịch ngược (thậm chí hỗ trợ mới nhất Python 3.8.0):
uncompyle6 utils.cpython-38.pyc > utils.py
và trăn gốc và trăn dịch ngược so sánh trông như thế này:
để bạn có thể thấy, cũng giống như vậy, hiệu ứng dịch ngược là RẤT TỐT .
Vâng, nó là có thể.
Có một trình dịch ngược Python (.PYC) mã nguồn mở hoàn hảo, được gọi là Decompyle ++ https://github.com/zrax/pycdc/
Decompyle ++ nhằm mục đích dịch mã byte Python đã biên dịch thành mã nguồn Python hợp lệ và có thể đọc được. Trong khi các dự án khác đã đạt được điều này với thành công khác nhau, Decompyle ++ là duy nhất ở chỗ nó tìm cách hỗ trợ mã byte từ bất kỳ phiên bản Python nào.
Cài đặt bằng pip cài đặt pycompyle6
pycompyle6 filename.pyc