使用反射加载程序集时,程序集加载失败

时间:2017-05-20 02:54:35

标签: c#

您好我在使用反射加载装配时遇到困难。有时,当有人做一个小程序并使用程序集加载许多防病毒程序会显示错误/肯定。 例如,在此代码中:

//Load the bytes as an assembly
Assembly exeAssembly = Assembly.Load(decryptedBuffer);

//Execute the assembly
object[] parameters = new object[1];                
exeAssembly.EntryPoint.Invoke(null, parameters);

所以我只尝试使用这样的反射:

typeof(Assembly).GetMethod("Load").Invoke(null,new object[] {decryptedBuffer});

但是,我不知道原因,但是这引起了我的异常,给我回复了以下错误:

typeof(Assembly).GetMethod("Load").Invoke(null,new object[] {decryptedBuffer});
    Problem signature:
      Problem Event Name:   CLR20r3
      Problem Signature 01: Proof.exe
      Problem Signature 02: 1.0.0.0
      Problem Signature 03: 591f941f
      Problem Signature 04: mscorlib
      Problem Signature 05: 4.6.1590.0
      Problem Signature 06: 5787ed44
      Problem Signature 07: 1037
      Problem Signature 08: 60
      Problem Signature 09: System.Reflection.AmbiguousMatch
      OS Version:   6.1.7601.2.1.0.256.1
      Locale ID:    3082
      Additional Information 1: 0a9e
      Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
      Additional Information 3: 0a9e
      Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

    Read our privacy statement online:
      http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

    If the online privacy statement is not available, please read our privacy statement offline:
      C:\Windows\system32\en-US\erofflps.txt

我的问题是,当我使用装配加载时,我如何使用反射来避免误/正面。目前我检查但是一切似乎都没用。

1 个答案:

答案 0 :(得分:0)

我认为按照错误。

  

问题签名09:System.Reflection.AmbiguousMatch

所以在Assembly.Load中有多个重载。因此,当您传递object [] {decryptedBuffer}时,会混淆使用哪一个。像String重载或Byte [] Overload。

使用以下方式解决您的问题。

typeof(Assembly).GetMethod("Load", new Type[] { typeof(byte[])}).Invoke(null,new object[] {decryptedBuffer});