因此,我有一个用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