2011-09-27 39 views
8

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?!

+0

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 ... –

+0

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

+4

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. –

Trả lời

1

Bạn bao gồm EXE như một tài nguyên vào dự án thứ hai như thế nào?

Sử dụng những định nghĩa:

#define BINFILE 222 
#define IDR_MYFILE 101 

Nếu tôi tham khảo các thực thi trong file rc của tôi như là trỏ đến tập tin gốc, ví dụ:

IDR_MYFILE BINFILE "S:\\mysource\\t1\\Release\\t1.exe" 

Sau đó, sau khi khai thác, tài nguyên EXE nhúng của tôi không được rebased, nhưng duy trì những gì tôi đã xây dựng nó với.

+0

có. thats làm thế nào tôi tham khảo các tập tin exe. Tôi bugging đầu của tôi cho việc này. Tôi sẽ tìm kiếm những lý do khác như Hans Passant gợi ý. – Ray

+0

Có lẽ đó là cách bạn trích xuất nó từ EXE đã biên dịch? Tôi đã sử dụng PE Explorer để trích xuất exe 1 từ exe 2. Và nó chỉ hoạt động. – Joe

+0

tôi đã sử dụng phòng thu trực quan để xuất tệp nhị phân. nhấp chuột phải vào tệp và chọn xuất. nên giống nhau. Tôi nghĩ tôi đã thu hẹp vấn đề. Tôi từng có một obfuscator. có lẽ một cái gì đó đã bị bỏ lại phía sau bởi vì dự án này là khá cũ. – Ray

Các vấn đề liên quan