Tôi đã viết một ứng dụng C # cho một khách hàng vài năm trước, nhưng tôi không còn có mã nguồn nữa. Tất cả những gì tôi có là EXE mà tôi đã triển khai trên PC của khách hàng. Có cách nào để tôi có thể tạo mã nguồn C # từ EXE không?
Tôi đã viết một ứng dụng C # cho một khách hàng vài năm trước, nhưng tôi không còn có mã nguồn nữa. Tất cả những gì tôi có là EXE mà tôi đã triển khai trên PC của khách hàng. Có cách nào để tôi có thể tạo mã nguồn C # từ EXE không?
Câu trả lời:
Reflector và bổ trợ FileDisassembler của nó .
Reflector sẽ cho phép xem mã nguồn. FileDisassembler sẽ cho phép bạn chuyển đổi nó thành một giải pháp VS.
Khi Red Gate nói rằng sẽ không còn là một phiên bản miễn phí của Net Reflector, tôi bắt đầu sử dụng ILSpy và Telerik của JustDecompile . Tôi đã tìm thấy ILSpy để dịch ngược chính xác hơn JustDecompile (vẫn còn trong bản Beta). Red Gate đã thay đổi quyết định của họ và vẫn có phiên bản .Net Reflector miễn phí, nhưng bây giờ tôi thích ILSpy.
Từ trang web ILSpy ( https://github.com/icsharpcode/ILSpy/ ):
ILSpy là trình duyệt và dịch ngược biên dịch mã nguồn mở .NET.
Cập nhật:
Ngày 15 tháng 4 năm 2012, ILSpy 2.0 đã được phát hành. Các tính năng mới so với phiên bản 1.0:
Cập nhật:
Reflector nói chung không còn miễn phí nữa, nhưng họ cung cấp miễn phí cho các nhà phát triển nguồn mở: http://reflectorblog.red-gate.com/2013/07/open-source/
Nhưng một vài công ty như DevExtras và JetBrains đã tạo ra các lựa chọn thay thế miễn phí:
Reflector và add-in File Disassembler từ Denis Bauer. Nó thực sự tạo ra các dự án nguồn từ các hội đồng, trong đó Reflector tự nó chỉ hiển thị nguồn được tháo rời.
THÊM: Yêu thích mới nhất của tôi là dotPeek của JetBrains .
Telerik JustDecompile là miễn phí và có một tính năng để tạo các dự án từ các hội đồng .NET.
Tôi ngạc nhiên không ai nhắc đến ildasm của Microsoft . Nó có thể không đẹp như ILSpy hoặc Reflector, nhưng nó đi kèm với Visual Studio nên nhiều nhà phát triển đã có nó.
Để chạy nó (giả sử VS 2013, phải giống với các phiên bản khác):
Bây giờ bạn có thể điều hướng cấu trúc DLL. Nhấp đúp chuột vào các thành viên trong lớp để xem IL. Sử dụng Tệp> Kết xuất để xuất IL thành tệp.
Bạn muốn phản xạ .