2010-12-01 26 views
1

我正在使用純Win32 API編寫Visual C++程序。根據我的理解,我需要單獨編譯並生成x86和x64體系結構的可執行文件。在單個可執行文件中結合使用x86和x64可執行文件(如Sysinternals工具)

如何將它們合併爲單個可執行文件並在運行時發出x64?我已經看到Sysinternals工具做同樣的事情,但不知道它是如何編程的。

是否必須將我的x64版本作爲資源包含到x86中,然後寫入文件系統並執行 CreateProcess?

任何指針?

+0

通常,x86應用程序在x64上運行得很好。然而,sysinternals工具使用驅動程序,必須爲正確的內核架構構建 – Bahbar 2010-12-01 17:51:09

回答

3

是的,他們嵌入操作特定的驅動程序作爲資源。下面是從Visual Studio中的截圖使用文件+打開+文件打開他們的Handle.exe實用程序後:他們是

alt text

不完全知道是什麼,但它肯定看起來像他們覆蓋Windows 9x中,32位和64位。接下來他們要做的就是使用資源API函數(FindResource,SizeofResource,LockResource)和WriteFile()將資源內容添加到可寫目錄中的文件中。然後使用CreateService和StartService加載驅動程序。

主程序是x86,因此它可以在任何Windows版本上運行。在運行時生成二進制文件並不是一件非常客戶友好的事情,他們(和他們的病毒掃描程序)通常喜歡知道從哪裏來的東西。