Từ một tệp được biên dịch, tôi có thể xem trình biên dịch nào đã được sử dụng để tạo tệp không?Làm thế nào để xác định trình biên dịch nào đã được sử dụng để biên dịch một tệp thực thi?
Trả lời
Ngoài ra còn có tiện ích 'chuỗi' cũ tốt. Dumps tất cả các chuỗi tìm kiếm ascii-ish nó tìm thấy trong nhị phân. Các trình biên dịch khác nhau nhúng các lượng thông tin khác nhau vào các tệp nhị phân mà chúng tạo ra, nhưng nhiều người sẽ thực sự bao gồm các chuỗi xác định rõ ràng.
đôi khi bạn có thể trực tiếp nhận được tên trình biên dịch và thậm chí cả số phiên bản theo cách này, w/caveat mà bạn cần phải lội qua rất nhiều thứ khác. ngay cả khi trình biên dịch không phải là loại đủ để ID chính nó, bạn có thể có thể học cách nhận ra các chuỗi trong thời gian chạy. grep đầu ra từ chuỗi cho những thứ như gcc để tăng tốc mọi thứ. – JustJeff
Trong một số trường hợp, bạn có thể chạy ldd
trên tệp nhị phân và tìm ra thư viện chuẩn nào được liên kết với nó. Ví dụ trên Solaris gcc vs Sun CC vs bất cứ điều gì.
Đối với mã C++, bạn cũng có thể kết xuất một số biểu tượng, tìm tên hàm bị xáo trộn, và sau đó tìm ra trình tạo nhân khẩu học nào tạo đúng tên gốc.
Tên mangling là không đủ để phân biệt nó, icc sẽ chỉ mangle nó như gcc ví dụ. – ismail
Hãy thử, IDA Pro xác định thư viện và công cụ được sử dụng để tạo tệp thi hành.
Nhiều trình biên dịch/liên kết chèn một phần .comment
vào tệp đầu ra xác định chúng. Ngoài ra còn có một số hành vi tinh vi hơn bạn có thể tạo ra dấu vân tay trình biên dịch tắt, nhưng tôi biết không có công cụ hiện có cho việc này.
Nếu bạn có nguồn, giải pháp đơn giản nhất là thử biên dịch với từng trình biên dịch được đề cập cho đến khi bạn nhận được một tệp nhị phân khớp với byte-cho-byte (hoặc thậm chí gần).
Và phần '.note. *' Được thêm vào. – user502515
- 1. Làm cách nào để xác định nền tảng nào mà tệp thực thi được biên dịch?
- 2. Nhận các tùy chọn trình biên dịch từ tệp thực thi đã biên dịch?
- 3. Bạn có thể tìm ra trình biên dịch nào được sử dụng để biên dịch chương trình không?
- 4. Làm thế nào để biên dịch một tệp với maven?
- 5. Trán Python, làm thế nào để có được một trình biên dịch sẽ được sử dụng?
- 6. Làm cách nào để thêm biểu tượng vào tệp thực thi được biên dịch mingw-gcc?
- 7. Làm thế nào để biên dịch một tệp Xcode 4?
- 8. Làm thế nào để thực thi thứ tự bit struct với trình biên dịch GCC?
- 9. Làm thế nào để biên dịch tập lệnh Lua thành một tệp thực thi duy nhất, trong khi vẫn đạt được trình biên dịch LuaJIT nhanh?
- 10. Trình biên dịch sẽ chỉ biên dịch mã có thể được thực thi?
- 11. Làm thế nào để thực thi trình biên dịch C++ để sử dụng phiên bản CRT cụ thể?
- 12. Làm thế nào để thực thi mã C++ mà không biên dịch nó?
- 13. Làm thế nào để tôi nhận được các autotools để biên dịch với trình biên dịch Intel?
- 14. Trình biên dịch/trình biên dịch/trình biên dịch C++
- 15. Xác định trình biên dịch nào được xây dựng một Win32 PE
- 16. Có trình biên dịch/phiên dịch nào để thực thi mã cho php 5.3 không?
- 17. Làm thế nào để sử dụng trình biên dịch 'yield return' để xây dựng một lớp
- 18. Làm thế nào để vượt qua một cờ biên dịch để thử nghiệm trình biên dịch ban đầu cmake?
- 19. Làm thế nào để bộ tiền xử lý C thực thi mã trong khi biên dịch?
- 20. Trình biên dịch D nào để sử dụng?
- 21. Làm thế nào để maven chỉ biên dịch các tệp java đã sửa đổi?
- 22. Chương trình/trình biên dịch/thông dịch viên thực sự hoạt động như thế nào?
- 23. Làm thế nào để bạn có được trình biên dịch Python để làm việc?
- 24. Làm thế nào để biên dịch một chương trình clisp sử dụng cl-ppcre?
- 25. biên dịch C++ thành chương trình "thực"
- 26. Nhúng các tệp DLL vào một tệp thực thi được biên dịch
- 27. Làm thế nào để trình biên dịch Visual Studio bỏ qua một tệp?
- 28. Làm thế nào để biên dịch chương trình đi trong 1.1.2 với các phụ thuộc được biên dịch trong 1.1.1?
- 29. Trình biên dịch java nào được NetBeans sử dụng?
- 30. Làm thế nào để làm độc lập on-the-fly trong bộ nhớ biên dịch với trình biên dịch eclipse?
http://superuser.com/questions/80605/detect-compiler-used-for-exe-file –
Bạn có ý nghĩa gì với tệp được biên dịch? Một tệp đối tượng hoặc tệp thực thi? – kgiannakakis
@ John Bartholomew: hãy cẩn thận để đưa câu trả lời này lên? –