2013-10-07 51 views
0

我試圖注入一個DLL到一個新的進程使用最新的32位Detours庫。錯誤0xc000007b當試圖注入一個DLL與少量

http://research.microsoft.com/en-us/projects/detours/

它爲我的過去,但在DLL中的變化之後,停止所有進程工作。當我恢復過程時,我收到一條消息框說

該應用程序無法正確啓動(0xc000007b)。單擊確定關閉該應用程序。

我重新創建了一個普通的空DLL注入,除了kernel32.dll以外沒有任何依賴關係。與其他可執行文件,它完美的作品。

任何想法爲什麼會發生這種情況?

回答

1

原來,問題是我使用Detours注入的DLL確實有任何導出。一旦我添加了一個虛擬導出,一切都很完美。

+0

呃,等等,所以這對很多進程都有效,除了一個呢?這個答案當然不是正確的。異常0xc000007b幾乎總是一個進程位的問題。就像試圖將一個32位的DLL注入一個64位的進程一樣。 –

+0

@HansPassant經過一番檢查後證明它實際上在任何進程中都不起作用:)我已經相應地編輯了這個問題。 0xc000007b是一個普通的加載程序錯誤,最可能的原因是位數。我的猜測是,如果注入的DLL沒有看到任何輸出,它會在新進程中混淆某些東西,並且會給加載器帶來麻煩。 – shoosh