2011-09-27 9 views
8

Czy ktoś zauważył, że jeśli importujesz exe jako zasób, zostaje on ponownie utworzony i wydaje się, że jego nagłówek PE zostanie odbudowany?C++ visual studio 2010 exe ​​w zasobie get Rebased?

Są chwile, kiedy to jest irytujące. Czy ktokolwiek wie, jak wyłączyć ponowne przesyłanie !?

kroki do odtworzenia w C++:

1) sporządzić świat cześć i ręcznie ustawić jego adres bazowy (właściwości) do powiedzmy 0x1000000

2) dokonać drugiego projektu i obejmują świat powitania do zasoby. Ustaw również ręcznie swój adres bazowy jak powyżej.

3) budować drugi projekt

4), wyciąg exe z zasobów i sprawdzić go za pomocą edytora Pe! zostaje przywrócona do 0x400000. Czemu?!

+0

według http://msdn.microsoft.com/en-us/library/hh7adf4f.aspx, możesz mieć problem z konfiguracją: proszę dodać parametry linkera . W każdym razie myślę, że jest mnóstwo programów, które mogą rebase PE, więc może rozważyć spróbować także ... –

+0

editbin.exe o ile rozumiem, jest zewnętrzny program, który można uruchomić po kompilacji. Przebudowa nagłówka PE nie będzie miała żadnego wpływu na powyższą sytuację. Tęskniłeś za tym punktem. – Ray

+4

Ani kompilator zasobów, ani interfejsy API zasobów nie wiedzą o plikach EXE. Traktują je tak samo jak kroplę bajtów. W związku z tym nie mogą nic zrobić, aby zmienić adres bazowy. Problem leży gdzie indziej. –

Odpowiedz

1

W jaki sposób dołączasz EXE jako źródło do drugiego projektu?

Stosując te określa:

#define BINFILE 222 
#define IDR_MYFILE 101 

Jeśli odwołać się do pliku wykonywalnego w moim .rc jako skierowaną do oryginalnego pliku, np:

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

Następnie, po ekstrakcji, mój zasób osadzony EXE nie jest rebased, ale utrzymuje to, z czym go zbudowałem.

+0

tak. to jak odniesienia do pliku exe. Wkurza mnie za to głowa. Będę szukać innych powodów, jak zasugerował Hans Passant. – Ray

+0

Być może to sposób wydobywania go ze skompilowanego pliku EXE? Użyłem PE Explorer do wyodrębnienia exe 1 z exe 2. I po prostu zadziałało. – Joe

+0

Użyłem wizualnego studio do eksportu pliku binarnego. kliknij plik prawym przyciskiem myszy i wybierz eksport. powinien być taki sam. Myślę, że zawęziłem problem. Miałem kiedyś obfuscatora. może coś zostało, ponieważ ten projekt jest dość stary. – Ray