2010-01-19 232 views
1

我目前的DLL注入工作,需要有一個單一的混合二元可能既充當可執行文件和一個DLL。我想也許編寫一個DllMain和WinMain函數,然後將其編譯爲可執行文件,但我不知道如果我這樣做會發生什麼。我知道這是posssible使用類似thinstall或提取的dll到一個臨時位置,然後從那裏到一個DLL和EXE結合,但我不想惹任何東西。所以基本上,是否可以定義一個WinMain和Dll Main,然後使用生成的可執行文件作爲兩者,如果沒有,這甚至有可能嗎?提前致謝!DLL EXE混合C++的Windows

+1

爲什麼不試試呢?最多應該花幾分鐘時間。 – 2010-01-19 02:26:31

+0

不是一個壞主意,我只是想檢查,因爲我是一個緩慢的程序員。 – user37875 2010-01-19 02:29:36

回答

3

既是一個DLL和一個EXE具有PE(可移植可執行)報頭。該標題有一個字段IMAGE_FILE_HEADER::Characteristics。該字段的位14是0(對於EXE)或1(對於DLL)。

+0

好的,謝謝! – user37875 2010-02-14 04:12:46

1

你爲什麼不把所有的公共代碼到一個靜態庫(.LIB),並同時擁有DLL項目和EXE項目圍繞靜態庫非常薄的包裝?

+0

沒有共同的代碼。我試圖使用基本上沒有DLL的DLL注入。 – user37875 2010-01-19 02:28:36

1

你可以創建你的可執行文件的臨時副本,打補丁的PE頭和注入這個副本。另一種方法是將DLL作爲二進制資源添加到可執行文件中。在運行時,您可以將此二進制資源寫入臨時文件並將其用於注入。

0

它可以從一個exe文件中導出函數了。所以你應該可以在LoadLibrary(「foo.exe」)後加上GetProcAddress(hFoo,「bar」)