2016-02-05 56 views
0

我有一個.exe應用程序,我需要爲此可執行文件創建一些自定義設置,因此我需要在其中掛接一個dll以便進行更改加載。在此之前,每個人都知道。Hook函數類偏移量(從.dll中的.exe)

的方案是這樣的: 鉤(0xOffset,& MyClass的:: myFunc的);

有以.exe一類,我需要完全重寫,我已經做了,在我的DLL,但我在使用的類的功能鉤麻煩,他們不是一成不變的。我讀過很多主題,但無法用任何方法實現它。在某些情況下,編譯器不會接受,在其他情況下已經接受,但.exe找不到函數的實際地址。

一個朋友給我一個解決方案,但它是一個有點混亂明白我怎麼能叫有功能,從我所看到的將是我的源代碼和許多循環非常大,可以這麼說。

能幫我嗎?

+0

你並不需要一個鉤子,你只需要一個回調函數。或者是一個用於從DLL動態調用函數的機制。你在Windows上編程嗎?這很可能是操作系統特定的機制。例如,在Windows中,有'LoadLibrary'和'GetProcAddress'用於動態調用函數。 –

+0

是的,窗戶。我只需要調用我的類的函數來代替原始的類函數。如果這就是你也在想,這暗示我要做什麼?一個例子? – Thulio

回答

0

成員函數確實要複雜得多。你必須處理正常的繼承,多重繼承和虛擬繼承;直接通話和虛擬通話。可能最糟糕的是處理成員函數指針,它完全不同於普通的函數指針。

其結果是,許多解決方案只用簡單的案件。能夠處理所有邊緣案例的解決方案需要大量代碼是非常正常的。