@Riketta

Как устроить динамический вызов обфусцированной DLL (все на C#)?

Есть библиотека которую мне нужно динамически вызывать из приложения.
Библиотека обфусцируется через ConfuserEx.
Не обфусцируются (не переименовываются) только неймспейс, класс и основная функция которую я буду вызывать.

Вызываю метод (который не заренеймлен обфускатором) таким образом:

Assembly A = Assembly.LoadFrom(".\Example.dll");
Type ClassType = A.GetType("Namespace.Class", true);
object Obj = Activator.CreateInstance(ClassType);
System.Reflection.MethodInfo MI = ClassType.GetMethod("Main");
MI.Invoke(Obj, null);


Все работает, но на Invoke вылетает не пойми откуда TypeLoadException.
Я так понял это происходит уже в самом методе Main, который вызывает уже обфусцированные методы.

Пример экцепшена:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeLoadException: A type load exception has occurred.
  at ZMLoader.Loader.Main () [0x00000] in <filename unknown>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at ACZM.Module.Initialize () [0x00000] in <filename unknown>:0


Как исправить это и получить таки рабочий вызов функции Main?

Так же буду рад альтернативным путям достижения моей цели, если таковые имеются.
  • Вопрос задан
  • 3045 просмотров
Пригласить эксперта
Ответы на вопрос 1
ImmortalCAT
@ImmortalCAT
C# loving
MI.Invoke(Obj, null);
проверь, нужен ли там null
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы