所以,我有一个用 C# 制作的可执行文件,我没有它的源代码,但我用 IDA 反汇编了它,它给了我很多面向对象的程序集。
我制作了一个 .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
....