From c8effe6b5a0ae29e6f8058110fd1fe19f78dea89 Mon Sep 17 00:00:00 2001 From: de4dot Date: Mon, 14 Apr 2014 06:28:29 +0200 Subject: [PATCH] Retry decrypting methods if it fails for some reason --- de4dot.code/deobfuscators/MethodsDecrypter.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/de4dot.code/deobfuscators/MethodsDecrypter.cs b/de4dot.code/deobfuscators/MethodsDecrypter.cs index fd5bdd11..8db05e0e 100644 --- a/de4dot.code/deobfuscators/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/MethodsDecrypter.cs @@ -17,6 +17,8 @@ along with de4dot. If not, see . */ +using System; +using System.Runtime.Remoting; using dnlib.DotNet; using AssemblyData; using de4dot.code.AssemblyClient; @@ -30,6 +32,20 @@ namespace de4dot.code.deobfuscators { } public static DumpedMethods Decrypt(ServerClrVersion serverVersion, string filename, byte[] moduleCctorBytes) { + Exception lastEx = null; + for (int i = 0; i < 5; i++) { + try { + return Decrypt2(serverVersion, filename, moduleCctorBytes); + } + catch (RemotingException ex) { + lastEx = ex; + continue; + } + } + throw lastEx; + } + + static DumpedMethods Decrypt2(ServerClrVersion serverVersion, string filename, byte[] moduleCctorBytes) { using (var client = new NewProcessAssemblyClientFactory(serverVersion).Create(AssemblyServiceType.MethodDecrypter)) { client.Connect(); client.WaitConnected();