Dogbolt Decompiler Explorer
(dogbolt.org)- Dogbolt là một Decompiler Explorer cho phép tải binary lên để so sánh kết quả từ nhiều decompiler tại một nơi
- Tệp tải lên bị giới hạn dưới 2MB, và có thông báo rằng các binary đã tải lên sẽ được lưu trữ
- Cung cấp mẫu để có thể xem cách hoạt động mà không cần trực tiếp tải tệp lên
- Các công cụ được kết nối bao gồm angr, BinaryNinja, Boomerang, dewolf, Ghidra, Hex-Rays, RetDec, Snowman, v.v.
- Tên mỗi công cụ được liên kết tới website hoặc kho lưu trữ, giúp kiểm tra ngay thông tin công cụ khi xem kết quả so sánh
Điều kiện tải binary lên
- Dogbolt cung cấp quy trình để người dùng tải tệp binary lên và xem kết quả decompile
- Kích thước tệp phải dưới 2MB
- Có hiển thị thông báo rằng binary đã tải lên sẽ được lưu trữ, kèm liên kết FAQ
Có thể xem trước bằng mẫu
- Có danh sách mẫu có thể xem mà không cần trực tiếp tải tệp lên
- Các mẫu được cấu hình để xem song song kết quả từ nhiều decompiler
1 bình luận
Ý kiến trên Hacker News
Muốn nói lời cảm ơn người đăng vì đã đợi đến tuần này. Có lẽ là do ảnh hưởng từ tập C++ Weekly gần đây, và đây là tài liệu hay: https://www.youtube.com/watch?v=h3F0Fw0R7ME
Cho đến tuần trước, vấn đề hiệu năng còn khá nghiêm trọng, nhưng giờ hàng đợi (https://dogbolt.org/queue) nhìn chung có vẻ ổn. Ngoại trừ một số nút thắt dài do vài decompiler bị tồn đọng, mọi thứ chạy khá mượt, và Josh cùng Glenn đã cải thiện rất tốt: https://github.com/decompiler-explorer/decompiler-explorer/c...
Bài liên quan: Decompiler Explorer - https://news.ycombinator.com/item?id=32079227 - tháng 7/2022, 82 bình luận
Hồi làm nghiên cứu tiến sĩ, nhất là khi xử lý deep learning cho mã bị làm rối, mình thật sự đã cần thứ này
Giai đoạn đầu thử nghiệm, Ghidra không hợp lắm với multiprocessing và có rất nhiều dữ liệu cần xử lý, nên mình chuyển sang angr. Có lẽ vẫn có thể làm bằng Ghidra, nhưng làm cùng việc đó với angr dễ hơn nhiều. Cũng thích cái tên này. Dù vậy, cũng muốn nhắc rằng Compiler Explorer mới là tên dự án, còn Godbolt là họ của tác giả; nhưng nếu đã đến mức dùng Godbolt như một động từ thì có lẽ con thuyền đã rời bến rồi
Sẽ rất hay nếu có một công cụ tương tự để khám phá việc lift binary sang nhiều biểu diễn trung gian (IR) khác nhau. Ví dụ như Ghidra p-code và sleigh, LLVM Machine IR, Qemu TCG
BNIL, một tập hợp nhiều tầng ngôn ngữ trung gian mà Binary Ninja dựa vào, cũng có thể thú vị. Có thể thấy dạng được phơi bày trong UI hoặc demo của cloud.binary.ninja
Nhân tiện đang nói về decompiler, không biết chọn Binary Ninja có phải lựa chọn an toàn không. Nghe nói IDA là chuẩn, nhưng nó cũng đắt đối với người muốn reverse engineering như sở thích
Cá nhân tôi thấy điểm mạnh lớn nhất của Binja là ngôn ngữ trung gian (IL). IL cấp cao đóng vai trò như decompiler, nhưng giữa assembly và source còn có IL cấp thấp và cấp trung. Nếu kết quả decompile hơi kỳ, xem IL sẽ giúp hiểu rõ hơn chuyện gì đang xảy ra; bản thân IL cũng dễ đọc hơn assembly thuần rất nhiều nên tôi dùng thường xuyên. Trên các nền tảng khác hầu như không có tính năng tương ứng đúng nghĩa. Ghidra và IDA mỗi bên cũng có một IL, nhưng so với IL dễ đọc cho con người của Binja thì chúng thiên về dễ đọc cho máy hơn
Thứ thiếu là scripting bằng Python, và đó là khác biệt khá lớn. Dù vậy, với công cụ miễn phí thì khó mà phàn nàn. IDA và Ghidra có điểm mạnh, điểm yếu và các plugin cộng đồng khác nhau, nên nhiều khả năng tốt nhất là dùng cả hai
Rất hay. Gần đây khi làm một dự án emulator, tôi đang tự triển khai disassembler và cứ nghĩ mãi phải làm thế nào để biến mẫu mã máy thành dạng tổng quát rồi chuyển thành pseudocode kiểu C
Vì vậy dạo này tôi rất muốn tự làm một decompiler đồ chơi
[1] https://docs.binary.ninja/dev/bnil-overview.html
[2] https://riverloopsecurity.com/blog/2019/05/pcode/ ví dụ
Có tutorial về decompiler nào đủ hay và chi tiết cho người không chuyên xem không?
Có thể lấy output của dogbolt đưa vào godbolt là được
Nhìn cái này thì có lẽ cũng chẳng cần thuyết phục các công ty khác nhiều. Họ hẳn đã nhận ra rằng kích thước binary nhỏ và so sánh với đối thủ sẽ dẫn tới nhiều business hơn
Trông như một giải pháp nhỏ rất phù hợp để phân loại vấn đề giữa các dịch vụ và so sánh cách giải quyết
Chi phí không hẳn là rẻ. Chạy decompiler tốn khá nhiều tài nguyên tính toán, và đặc biệt có một số decompiler khó có thể nói là hiệu quả
Giá mà tôi thấy nó khi được đăng năm ngoái. Thật sự rất tuyệt và cực kỳ tiện lợi