Có ai để ý rằng nếu bạn nhập một exe làm tài nguyên, nó sẽ bị loại bỏ và có vẻ như tiêu đề PE của nó được xây dựng lại?C++ visual studio 2010 exe trong tài nguyên được Rebased?
Có những lúc điều này gây khó chịu. Có ai biết làm thế nào để vô hiệu hóa việc rebasing !?
bước để tái tạo trong C++:
1) biên dịch một thế giới hello và tự đặt địa chỉ cơ sở của nó (trong tài sản) để cho phép nói rằng 0x1000000
2) thực hiện một dự án thứ hai và bao gồm các hello world vào tài nguyên. Cũng tự thiết lập địa chỉ cơ sở của nó như trên.
3) xây dựng dự án thứ hai
4) trích xuất exe từ tài nguyên và kiểm tra bằng trình chỉnh sửa Pe! nó được đặt trở về 0x400000. Tại sao?!
theo http://msdn.microsoft.com/en-us/library/hh7adf4f.aspx, bạn có thể có vấn đề với cấu hình của bạn: xin vui lòng thêm các thông số mối liên kết . Nhưng dù sao, tôi nghĩ rằng có rất nhiều chương trình có thể rebase PE, vì vậy có thể xem xét thử chúng ... –
editbin.exe theo như tôi hiểu, là một chương trình bên ngoài có thể được chạy sau khi biên dịch. Việc xây dựng lại tiêu đề PE sẽ không có bất kỳ ảnh hưởng nào đến tình huống trên. Bạn đã bỏ lỡ điểm. – Ray
Cả trình biên dịch tài nguyên lẫn API tài nguyên đều không biết gì về các tệp EXE. Họ đối xử với họ giống như một blob byte. Theo đó, họ không thể làm bất cứ điều gì để thay đổi địa chỉ cơ sở. Vấn đề nằm ở nơi khác. –