krone
VIP Members
-
26/07/2016
-
141
-
259 bài viết
Disassembling Python Byte Code
Nhân tiện trong challenge WhiteHat Grand Prix vừa qua, mình thấy có một bài liên quan đến Disassembling Pythong Byte Code nên mình viết một bài về ACM/Programming cho các bạn tham khảo để biết thêm về "Disassembling Python Byte Code". Task cụ thể trong Grandprix đó là "Pyc" và writeup cho bai này cũng được một số team explain, mình xin dẫn link một write up mà mình tìm được:
https://bl4ckbull3t.blogspot.com/2017/12/writeup-pyc-sau-khi-nhan-uoc-file-minh.html
Okey, vậy Disassembling Python Byte Code là gì ?
Bạn muốn biết chi tiết những gì mã của bạn đang làm? Bằng cách phân tích nó vào mã byte cấp thấp được sử dụng bởi thông dịch viên.
Module "dis" được sử dụng để xuất ra bất kì một hàm nào của Python. Ví dụ:
"dis" module thực sự hữu ích nếu bạn muốn nghiên cứu điều gì thực sự đang diễn ra khi chương trình của bạn thực thi ở level rất thấp.(Ví dụ: bạn đang muốn tìm hiểu về hiệu suất hoạt động của chương trình).
Mã byte được giải thích bởi hàm "dis()" có sẵn trên các hàm như sau:
Nếu muốn giải thích được đoạn code này cho chính bạn, bạn cần sử dụng một số hằng số được định nghĩa trong module "opcode". Ví dụ:
Có một điều đáng buồn là module này không hề có chức năng để biễu diễn bytecode theo cách trông giống như là programming. Tuy nhiên chức năng "generator" sẽ lấy chuỗi mã bytecode và biến nó thành opcodes và các đối số.
Và output
Trên đây là một ví dụ thực tế về bytecode Python . Hy vọng các bạn có thể hiểu rõ hơn về thể loại này một chút, sau này gặp các bài như này cũng không bỡ ngỡ. Ứng dụng của Bytecode mình sẽ viết thêm một bài khác.
https://bl4ckbull3t.blogspot.com/2017/12/writeup-pyc-sau-khi-nhan-uoc-file-minh.html
Okey, vậy Disassembling Python Byte Code là gì ?
Bạn muốn biết chi tiết những gì mã của bạn đang làm? Bằng cách phân tích nó vào mã byte cấp thấp được sử dụng bởi thông dịch viên.
Module "dis" được sử dụng để xuất ra bất kì một hàm nào của Python. Ví dụ:
"dis" module thực sự hữu ích nếu bạn muốn nghiên cứu điều gì thực sự đang diễn ra khi chương trình của bạn thực thi ở level rất thấp.(Ví dụ: bạn đang muốn tìm hiểu về hiệu suất hoạt động của chương trình).
Mã byte được giải thích bởi hàm "dis()" có sẵn trên các hàm như sau:
Nếu muốn giải thích được đoạn code này cho chính bạn, bạn cần sử dụng một số hằng số được định nghĩa trong module "opcode". Ví dụ:
Có một điều đáng buồn là module này không hề có chức năng để biễu diễn bytecode theo cách trông giống như là programming. Tuy nhiên chức năng "generator" sẽ lấy chuỗi mã bytecode và biến nó thành opcodes và các đối số.
Và output
Trên đây là một ví dụ thực tế về bytecode Python . Hy vọng các bạn có thể hiểu rõ hơn về thể loại này một chút, sau này gặp các bài như này cũng không bỡ ngỡ. Ứng dụng của Bytecode mình sẽ viết thêm một bài khác.