在main中调用没有调用的dll函数

时间:2017-08-28 11:18:42

标签: c# visual-studio debugging dll runtimemodification

我想知道如何调用外部静态类(dll文件)中定义的函数而不在main中调用它。

为了使事情更清楚,考虑一个没有公开代码的exe文件,我们不能对它做任何修改,现在我想测试一个exe文件,其中包含我的dll文件中定义的某些测试用例必须在exe文件的main()函数中调用函数。但如上所述,我没有权限修改exe文件的代码。现在,如何使用visual studio在没有调用它的情况下在所需的执行点调用此dll函数。

我想调用一个函数而不向main函数添加任何行。

为了让事情更清楚,我只想添加一些例子

static class DllClass
{
   static void dllFunction()
   {
      //some implementation.
   }
}
class ThirdParty
{
  public static void Main()
  {
    //Default implementation that i cannot modify.
    //Invoking my static function at this point without calling.(i.e i cannot call DllClass.dllFunction()) 
    //continuing with default implementation.
  }
}     

1 个答案:

答案 0 :(得分:0)

一个想法是,如果你无法修改.exe中的代码,使用Powershell调用dll文件。

例如,一个带方法的简单库。

  

命名空间数学
  {
  公共课方法
  {
      公共方法()
      {
      }
      public static int Compare1(int a,int b)
      {
        如果一个       返回a;
        否则
      返回b;
      }

     

public int Compare2(int a,int b)
         {
        如果一个       返回a;
        否则
      返回b;
           }
       }
  }

然后在Powershell环境中调用它:

[空隙] [reflection.assembly] ::的LoadFile( “C:/xxx.dll”)
02. [Math.methods] ::比较1(10,8)
03. $ a = New-Object Math.Methods
04. $ a.Compare2(2,6)