Thực ra, Dropbox đã làm cho nó rất tốt, họ có thể bảo đảm ứng dụng máy tính để bàn của họ được tạo bằng python; Tôi đã nghiên cứu điều này rất nhiều, nhưng không có giải pháp tốt hơn là obfuscation, mà không phải là cách rất an toàn để đi, và bạn sẽ thấy mã của bạn được tải lên ở đâu đó.Làm xáo trộn mã vạch trăn thông qua đột biến thông dịch
tôi nghe một phiên làm bởi Giovanni Bajo (người sáng lập PyInstaller), ông nói Dropbox thực hiện điều này:
- Bytecode-xáo trộn bởi biên dịch lại dịch CPython của bạn, và của thành viên này, tiêu chuẩn CPython thông dịch viên sẽ không thể chạy nó, chỉ trình biên dịch cpython biên dịch lại.
- Tất cả những gì bạn cần làm là trộn các số bên dưới
define loadup 8
.
Tôi chưa bao giờ trải qua mã nguồn của Python, vì vậy, tôi sẽ không tuyên bố rằng tôi hoàn toàn hiểu các từ ở trên.
Tôi cần nghe tiếng nói của các chuyên gia: Làm thế nào để làm một điều như vậy? Và nếu sau khi biên dịch lại, tôi sẽ có thể đóng gói ứng dụng của mình bằng các công cụ sẵn có như PyInstaller?
Cập nhật:
tôi đã thực hiện một số nghiên cứu liên quan đến cách Dropbox làm kiểu này obfuscation/đột biến, và tôi thấy điều này:
Theo Hagen Fritsch, họ làm điều đó trong hai giai đoạn:
Chúng sử dụng mã hóa TEA cùng với RNG được gieo bởi một số giá trị trong đối tượng mã của mỗi mô-đun python. Họ điều chỉnh thông dịch phù hợp để nó
a) Giải mã các module và
b) Ngăn chặn truy cập vào các giải mã mã đối tượng.
Điều này sẽ là con đường đơn giản cho phép dropbox giải mã mọi thứ và đổ các mô-đun bằng cách sử dụng trình soạn thảo nội dung.
Một thủ thuật khác được sử dụng là việc xáo trộn thủ công các mã opcodes. Thật không may điều này chỉ có thể được cố định semiautomatically do đó mật mã thay thế monoalphabetic của họ tỏ ra khá hiệu quả trong điều khoản của chiến thắng một thời gian.
Tôi vẫn muốn hiểu rõ hơn về cách thực hiện điều này, hơn thế nữa, tôi không biết cách giải mã xảy ra trong quá trình này ... Tôi muốn tất cả giọng nói của chuyên gia ở đây ... bạn ở đâu.
Tương tự, câu hỏi gần đây hơn: [Không thể giải mã được Python] (http://stackoverflow.com/q/15087339/222914) –
Cảm ơn Janne. Rất giống với những gì bạn nói, thêm vào đó, việc loại bỏ các mô-đun nội tâm trong trình thông dịch mới được tạo ra/xáo trộn. – securecurve
vào cuối ngày, bytecode sẽ được trích xuất từ bộ nhớ, sau đó, kẻ tấn công có thể làm so sánh giữa bytecode xáo trộn mới và một tiêu chuẩn để biết làm thế nào shuffling được; nhưng, hãy công bằng, không thể cùng một kẻ tấn công dịch ngược một chương trình viết bằng C để lấy mã nguồn, không có gì là an toàn chống lại đảo ngược, đó là một sự đánh đổi ... đó là cách tôi thấy mọi thứ, có thể tôi sai . – securecurve