protected override bool TryParse(string str)
            {
                Contracts.AssertNonEmpty(str);

                // We accept N:K:S where N is the new column name, K is the output kind,
                // and S is source column names.
                string extra;

                if (!base.TryParse(str, out extra))
                {
                    return(false);
                }
                if (extra == null)
                {
                    return(true);
                }

                OutputKind kind;

                if (!Enum.TryParse(extra, true, out kind))
                {
                    return(false);
                }
                OutputKind = kind;
                return(true);
            }
Пример #2
0
 /// <summary>
 /// Initializes a new instance of the WscriptLauncher class.
 /// </summary>
 /// <param name="scriptLanguage">Possible values include: 'JScript',
 /// 'VBScript'</param>
 /// <param name="type">Possible values include: 'Wmic', 'Regsvr32',
 /// 'Mshta', 'Cscript', 'Wscript', 'PowerShell', 'Binary', 'MSBuild',
 /// 'InstallUtil'</param>
 /// <param name="dotNetVersion">Possible values include: 'Net35',
 /// 'Net40', 'NetCore31'</param>
 /// <param name="runtimeIdentifier">Possible values include: 'win_x64',
 /// 'win_x86', 'win_arm', 'win_arm64', 'win7_x64', 'win7_x86',
 /// 'win81_x64', 'win81_x86', 'win81_arm', 'win10_x64', 'win10_x86',
 /// 'win10_arm', 'win10_arm64', 'linux_x64', 'linux_musl_x64',
 /// 'linux_arm', 'linux_arm64', 'rhel_x64', 'rhel_6_x64', 'tizen',
 /// 'tizen_4_0_0', 'tizen_5_0_0', 'osx_x64', 'osx_10_10_x64',
 /// 'osx_10_11_x64', 'osx_10_12_x64', 'osx_10_13_x64', 'osx_10_14_x64',
 /// 'osx_10_15_x64'</param>
 /// <param name="outputKind">Possible values include:
 /// 'ConsoleApplication', 'WindowsApplication',
 /// 'DynamicallyLinkedLibrary', 'NetModule', 'WindowsRuntimeMetadata',
 /// 'WindowsRuntimeApplication'</param>
 public WscriptLauncher(ScriptingLanguage?scriptLanguage = default(ScriptingLanguage?), string progId = default(string), string diskCode = default(string), int?id = default(int?), int?listenerId = default(int?), int?implantTemplateId = default(int?), string name = default(string), string description = default(string), LauncherType?type = default(LauncherType?), DotNetVersion?dotNetVersion = default(DotNetVersion?), RuntimeIdentifier?runtimeIdentifier = default(RuntimeIdentifier?), bool?validateCert = default(bool?), bool?useCertPinning = default(bool?), string smbPipeName = default(string), int?delay = default(int?), int?jitterPercent = default(int?), int?connectAttempts = default(int?), System.DateTime?killDate = default(System.DateTime?), string launcherString = default(string), string stagerCode = default(string), OutputKind?outputKind = default(OutputKind?), bool?compressStager = default(bool?))
 {
     ScriptLanguage    = scriptLanguage;
     ProgId            = progId;
     DiskCode          = diskCode;
     Id                = id;
     ListenerId        = listenerId;
     ImplantTemplateId = implantTemplateId;
     Name              = name;
     Description       = description;
     Type              = type;
     DotNetVersion     = dotNetVersion;
     RuntimeIdentifier = runtimeIdentifier;
     ValidateCert      = validateCert;
     UseCertPinning    = useCertPinning;
     SmbPipeName       = smbPipeName;
     Delay             = delay;
     JitterPercent     = jitterPercent;
     ConnectAttempts   = connectAttempts;
     KillDate          = killDate;
     LauncherString    = launcherString;
     StagerCode        = stagerCode;
     OutputKind        = outputKind;
     CompressStager    = compressStager;
     CustomInit();
 }
Пример #3
0
        public void InitializeProject(CompilerProjectInfo projectInfo)
        {
            Debug.Assert(workspace == null);

            defaultOutputKind = GetDefaultOutputKind(kind);

            workspace = new AdhocWorkspace(RoslynMefHostServices.DefaultServices);
            workspace.WorkspaceChanged += Workspace_WorkspaceChanged;
            var refs = projectInfo.AssemblyReferences.Select(a => a.CreateMetadataReference(docFactory)).ToArray();

            var compilationOptions = CreateCompilationOptions()
                                     .WithPlatform(GetPlatform(projectInfo.Platform))
                                     .WithAssemblyIdentityComparer(DesktopAssemblyIdentityComparer.Default);

            if (projectInfo.PublicKey != null)
            {
                compilationOptions = compilationOptions
                                     .WithCryptoPublicKey(ImmutableArray.Create <byte>(projectInfo.PublicKey))
                                     .WithDelaySign(true);
            }
            var roslynProjInfo = ProjectInfo.Create(projectId, VersionStamp.Create(), "compilecodeproj", projectInfo.AssemblyName, LanguageName,
                                                    compilationOptions: compilationOptions,
                                                    parseOptions: ParseOptions,
                                                    metadataReferences: refs,
                                                    isSubmission: false, hostObjectType: null);

            workspace.AddProject(roslynProjInfo);
        }
Пример #4
0
 /// <summary>
 /// Initializes a new instance of the PowerShellLauncher class.
 /// </summary>
 /// <param name="dotNetFrameworkVersion">Possible values include:
 /// 'Net40', 'Net35', 'NetCore21'</param>
 /// <param name="type">Possible values include: 'Wmic', 'Regsvr32',
 /// 'Mshta', 'Cscript', 'Wscript', 'PowerShell', 'Binary', 'MSBuild',
 /// 'InstallUtil'</param>
 /// <param name="outputKind">Possible values include:
 /// 'ConsoleApplication', 'WindowsApplication',
 /// 'DynamicallyLinkedLibrary', 'NetModule', 'WindowsRuntimeMetadata',
 /// 'WindowsRuntimeApplication'</param>
 public PowerShellLauncher(string parameterString = default(string), string powerShellCode = default(string), string encodedLauncherString = default(string), int?id = default(int?), int?listenerId = default(int?), string name = default(string), string description = default(string), DotNetVersion?dotNetFrameworkVersion = default(DotNetVersion?), LauncherType?type = default(LauncherType?), int?implantTemplateId = default(int?), bool?validateCert = default(bool?), bool?useCertPinning = default(bool?), string smbPipeName = default(string), int?delay = default(int?), int?jitterPercent = default(int?), int?connectAttempts = default(int?), System.DateTime?killDate = default(System.DateTime?), string launcherString = default(string), string stagerCode = default(string), string base64ILByteString = default(string), OutputKind?outputKind = default(OutputKind?), bool?compressStager = default(bool?))
 {
     ParameterString       = parameterString;
     PowerShellCode        = powerShellCode;
     EncodedLauncherString = encodedLauncherString;
     Id                     = id;
     ListenerId             = listenerId;
     Name                   = name;
     Description            = description;
     DotNetFrameworkVersion = dotNetFrameworkVersion;
     Type                   = type;
     ImplantTemplateId      = implantTemplateId;
     ValidateCert           = validateCert;
     UseCertPinning         = useCertPinning;
     SmbPipeName            = smbPipeName;
     Delay                  = delay;
     JitterPercent          = jitterPercent;
     ConnectAttempts        = connectAttempts;
     KillDate               = killDate;
     LauncherString         = launcherString;
     StagerCode             = stagerCode;
     Base64ILByteString     = base64ILByteString;
     OutputKind             = outputKind;
     CompressStager         = compressStager;
     CustomInit();
 }
Пример #5
0
        private static CompilationOptions CreateCompilationOptions(string outputType, string languageName)
        {
            OutputKind?kind = null;

            switch (outputType)
            {
            case "Library":
                kind = OutputKind.DynamicallyLinkedLibrary;
                break;

            case "Exe":
                kind = OutputKind.ConsoleApplication;
                break;

            case "Module":
                kind = OutputKind.NetModule;
                break;

            case "Winexe":
                kind = OutputKind.WindowsApplication;
                break;
            }

            if (kind.HasValue)
            {
                if (languageName == LanguageNames.CSharp)
                {
                    return(new CSharpCompilationOptions(kind.Value));
                }
            }

            return(null);
        }
Пример #6
0
        /// <summary>
        ///     Compiles the and writes to a PE.
        /// </summary>
        /// <param name="compilationSources">The compilation sources.</param>
        /// <param name="detailsToUseForTarget">The details to use for target.</param>
        /// <param name="additionalUsings">The additional usings.</param>
        /// <param name="additionalReferences">The additional references.</param>
        /// <param name="outputKind">Defaults to Dll if not specified</param>
        /// <returns></returns>
        public static ScriptCompilationResult CompileAndWriteAssembly(ImmutableList <SyntaxTree> compilationSources, AsmDetail detailsToUseForTarget,
                                                                      IEnumerable <string> additionalUsings = null, IEnumerable <MetadataReference> additionalReferences = null,
                                                                      OutputKind?outputKind = null)
        {
            var compilationPrep = PrepareCompilation(compilationSources, detailsToUseForTarget, additionalUsings, additionalReferences, outputKind);

            var emitResult = compilationPrep.Compilation.Emit(detailsToUseForTarget.AsmPath, detailsToUseForTarget.PdbPath);

            return(BuildScriptCompilationResult(detailsToUseForTarget, emitResult, compilationPrep));
        }
Пример #7
0
        private static CompilationOptions CreateCompilationOptions(Microsoft.Build.Evaluation.Project project, string languageName)
        {
            var        outputType = project.GetPropertyValue("OutputType");
            OutputKind?kind       = null;

            switch (outputType)
            {
            case "Library":
                kind = OutputKind.DynamicallyLinkedLibrary;
                break;

            case "Exe":
                kind = OutputKind.ConsoleApplication;
                break;

            case "Module":
                kind = OutputKind.NetModule;
                break;

            case "Winexe":
                kind = OutputKind.WindowsApplication;
                break;
            }

            if (kind.HasValue)
            {
                if (languageName == LanguageNames.CSharp)
                {
                    return(new CSharpCompilationOptions(kind.Value));
                }

                if (languageName == LanguageNames.VisualBasic)
                {
                    return(new VisualBasicCompilationOptions(kind.Value));
                }
            }

            return(null);
        }
Пример #8
0
        private static CompilationOptions CreateCompilationOptions(AnalyzerResult analyzerResult, string languageName)
        {
            string     outputType = analyzerResult.GetProperty("OutputType");
            OutputKind?kind       = null;

            switch (outputType)
            {
            case "Library":
                kind = OutputKind.DynamicallyLinkedLibrary;
                break;

            case "Exe":
                kind = OutputKind.ConsoleApplication;
                break;

            case "Module":
                kind = OutputKind.NetModule;
                break;

            case "Winexe":
                kind = OutputKind.WindowsApplication;
                break;
            }

            if (kind.HasValue)
            {
                if (languageName == LanguageNames.CSharp)
                {
                    return(new CSharpCompilationOptions(kind.Value));
                }
                if (languageName == LanguageNames.VisualBasic)
                {
                    return(new VisualBasicCompilationOptions(kind.Value));
                }
            }

            return(null);
        }
 public AnalyzersDiagnosticAnalyzerRunner(DiagnosticAnalyzer analyzer, OutputKind?outputKind = null)
 {
     Analyzer    = analyzer;
     _outputKind = outputKind ?? OutputKind.DynamicallyLinkedLibrary;
 }
Пример #10
0
 internal static string ToSerializedValue(this OutputKind?value)
 {
     return(value == null ? null : ((OutputKind)value).ToSerializedValue());
 }
Пример #11
0
        private static PreparedCompilation PrepareCompilation(ImmutableList <SyntaxTree> compilationSources, AsmDetail detailsToUseForTarget,
                                                              IEnumerable <string> additionalUsings = null, IEnumerable <MetadataReference> additionalReferences = null, OutputKind?outputKind = null)
        {
            var commonDetails = BuildCommonCompilationDetails(additionalUsings, additionalReferences);

            var outputKindForOptions = OutputKind.DynamicallyLinkedLibrary;

            if (outputKind.HasValue)
            {
                outputKindForOptions = outputKind.Value;
            }

            var options = new CSharpCompilationOptions(outputKindForOptions)
                          .WithUsings(commonDetails.ListOfUsings)
                          .WithAssemblyIdentityComparer(DesktopAssemblyIdentityComparer.Default);

            var compilation = CSharpCompilation.Create(detailsToUseForTarget.AsmName,
                                                       compilationSources.ToArray(), commonDetails.MetadataReferences);

            return(new PreparedCompilation
            {
                Options = options,
                Compilation = compilation,
                MetadataReferences = commonDetails.MetadataReferences,
                Usings = commonDetails.ListOfUsings
            });
        }