2011-09-27 27 views
8

exeをリソースとしてインポートすると、リベースされ、PEヘッダが再構築されているように見えることは誰も気づいていますか?C++ visual studio 2010 exeリソースを取得Rebase?

これは刺激を感じることがあります。誰もがリベースを無効にする方法を知っていますか?

の手順は、C++で再現します

1)は、プロパティで(そのベースアドレスをハロー世界をコンパイルし、手動で設定)には、0x1000000番地

2)が第2のプロジェクトを作ると言うことができますし、ハローの世界に含まリソース。また、上記のようにベースアドレスを手動で設定します。

3)は、第2のプロジェクト

4)資源からexeファイルを抽出し、Peのエディタでそれをチェックを構築します! 0x400000に設定されます。なぜ?!

+0

http://msdn.microsoft.com/en-us/library/hh7adf4f.aspxによると、あなたはあなたの設定に問題がある可能性があります:リンカのパラメータを追加してください。とにかく、私はそれがPEをrebaseすることができるプログラムのたくさんあると思うので、それらも試してみることを検討してください... –

+0

editbin.exe私が理解する限り、コンパイル後に実行できる外部プログラムです。 PEヘッダーを再構築しても、上記の状況に影響はありません。あなたはその点を逃した。 – Ray

+4

リソースコンパイラもリソースAPIもEXEファイルについて何も知らない。彼らはバイトの塊のようにそれらを扱います。したがって、彼らは基本アドレスを変更するために何もすることはできません。問題は他のところにあります。 –

答えて

1

EXEをリソースとして2番目のプロジェクトにどのように含めるのですか?私は、元のファイルを指すように私.rcファイルに実行可能ファイルを参照する場合など、

#define BINFILE 222 
#define IDR_MYFILE 101 

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

次に、抽出時、私の埋め込まれたEXEのリソースをこれらの定義を使用して

リベースされていませんが、私が構築したものを維持しています。

+0

はい。それはどのように私はexeファイルを参照してください。私はこのために頭を悩ましている。私はハンス・パサントが示唆したように、他の理由を探します。 – Ray

+0

おそらく、それはあなたがコンパイルされたEXEからそれを抽出しているのでしょうか? exe 2からexe 1を抽出するためにPE Explorerを使用しました。 – Joe

+0

私はバイナリファイルをエクスポートするためにVisual Studioを使用しました。ファイルを右クリックし、エクスポートを選択します。同じでなければなりません。私は問題を絞り込んだと思う。私は以前は難読化していました。このプロジェクトはかなり古いので、何かが残っている可能性があります。 – Ray

関連する問題