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); }
/// <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(); }
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); }
/// <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(); }
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); }
/// <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)); }
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); }
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; }
internal static string ToSerializedValue(this OutputKind?value) { return(value == null ? null : ((OutputKind)value).ToSerializedValue()); }
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 }); }