Tôi có một chương trình mà tôi đã mất mã nguồn C ++. Có bất kỳ trình biên dịch C ++ tốt nào ngoài đó không?
Tôi đã chạy qua Boomerang .
Tôi có một chương trình mà tôi đã mất mã nguồn C ++. Có bất kỳ trình biên dịch C ++ tốt nào ngoài đó không?
Tôi đã chạy qua Boomerang .
Câu trả lời:
Bạn có thể sử dụng IDA Pro bằng Hex-Rays . Bạn thường sẽ không nhận được C ++ tốt từ một tệp nhị phân trừ khi bạn đã biên dịch trong thông tin gỡ lỗi. Chuẩn bị để dành nhiều lao động thủ công đảo ngược mã.
Nếu bạn không loại bỏ các mã nhị phân, có một số hy vọng vì IDA Pro có thể tạo ra mã C-alike để bạn làm việc. Thường thì nó rất thô, ít nhất là khi tôi sử dụng nó vài năm trước.
thông tin bị loại bỏ trong quá trình biên dịch. Ngay cả khi một trình dịch ngược có thể tạo ra mã tương đương logic với các lớp và mọi thứ (nó có thể không thể), phần tự lập tài liệu đã biến mất trong mã phát hành được tối ưu hóa. Không có tên biến, không có tên quy trình, không có tên lớp - chỉ là địa chỉ.
Có, nhưng không ai trong số họ sẽ quản lý để tạo ra mã đủ đọc được để xứng đáng với nỗ lực. Bạn sẽ dành nhiều thời gian hơn khi cố gắng đọc mã nguồn được dịch ngược với các khối trình hợp dịch bên trong, hơn là viết lại ứng dụng cũ của bạn từ đầu.
Tôi chưa thấy bất kỳ trình dịch ngược nào tạo mã C ++. Tôi đã thấy một vài thử nghiệm thực hiện một nỗ lực hợp lý trong việc tạo mã C, nhưng chúng có xu hướng phụ thuộc vào việc so khớp các mẫu tạo mã của một trình biên dịch cụ thể (điều đó có thể đã thay đổi, đã lâu kể từ lần cuối tôi xem xét điều này ). Tất nhiên mọi thông tin tượng trưng sẽ không còn. Google cho "trình dịch ngược".
Tùy thuộc vào độ lớn và mức độ viết của mã gốc, nó có thể đáng để bắt đầu lại bằng ngôn ngữ yêu thích của bạn (có thể vẫn là C ++) và học hỏi từ bất kỳ lỗi nào mắc phải trong phiên bản trước. Không phải ai đó đã từng nói về việc viết một cái để vứt bỏ?
nb Rõ ràng nếu đây là một sản phẩm khổng lồ, thì nó có thể không xứng đáng với thời gian.
objdump
cho Linux