因此,我有一個用C#編寫的可執行文件,我沒有它的源代碼,但我用IDA反彙編了它,它給了我很多面向對象的程序集。從C#.exe調用非託管C++ .dll的函數
我製作了一個.exe文件,將.dll注入到另一個.exe中,並且我已經將這個新的C++ DLL注入到C#.exe中,沒有任何問題,DLLMain被調用,所以...
但是,當我將此DLL注入到用C++創建的普通.exe文件中時,我可以在.exe中調用它的內存地址的函數,我可以在IDA上使用它。
問題是,即使函數名稱被反彙編,面向對象的程序集函數也沒有地址。
那麼,有沒有什麼辦法可以用C#.exe文件中的注入DLL調用此函數?
如果可能,是否有一種方法可以使用C#.exe文件及其所有函數和變量中聲明的命名空間,即使是私有的?
樣本反彙編代碼:
.namespace MyCSharpApp
{
.class public auto ansi Test extends [mscorlib]System.Object
{
.field public value class [Microsoft.Xna.Framework]Microsoft.Xna.Framework.Vector2 pos
.field public int32 foo
....
即使有可能得到一個地址 - 代碼是MSIL,而不是本地代碼也沒有多大意義。需要啓動CLR(我不知道這將如何發生)。 – 2011-05-23 20:22:35
@pst:由於應用程序是.NET,所以CLR將啓動並運行。但是,被調用的特定函數可能不會被打亂,所以您的關注是有效的。 – 2011-05-23 21:13:17