Ejemplo n.º 1
0
 static bool IsDotNetCoreBundle(string filename)
 {
     if (!PortableExecutableFileHelpers.IsPE(filename, out bool isExe, out bool hasDotNetMetadata))
     {
         return(false);
     }
     if (!isExe || hasDotNetMetadata)
     {
         return(false);
     }
     try {
         using (var stream = File.OpenRead(filename)) {
             if (stream.Length < bundleSig.Length)
             {
                 return(false);
             }
             stream.Position = stream.Length - bundleSig.Length;
             var sig = new byte[bundleSig.Length];
             stream.Read(sig, 0, sig.Length);
             for (int i = 0; i < sig.Length; i++)
             {
                 if (bundleSig[i] != sig[i])
                 {
                     return(false);
                 }
             }
             return(true);
         }
     }
     catch {
     }
     return(false);
 }
Ejemplo n.º 2
0
        internal static bool IsDotNetCoreAppHostFilename(string filename)
        {
            if (!File.Exists(filename))
            {
                return(false);
            }

            // We detect the apphost.exe like so:
            //	- must have an exe extension
            //	- must be a PE file and an EXE (DLL bit cleared)
            //	- must not have .NET metadata
            //	- must have a file with the same name but a dll extension
            //	- this dll file must be a PE file and have .NET metadata

            if (!StringComparer.OrdinalIgnoreCase.Equals(Path.GetExtension(filename), ".exe"))
            {
                return(false);
            }
            var dllFilename = Path.ChangeExtension(filename, "dll");

            if (!File.Exists(dllFilename))
            {
                return(false);
            }
            if (!PortableExecutableFileHelpers.IsPE(filename, out bool isExe, out bool hasDotNetMetadata))
            {
                return(false);
            }
            if (!isExe || hasDotNetMetadata)
            {
                return(false);
            }
            if (!PortableExecutableFileHelpers.IsPE(dllFilename, out _, out hasDotNetMetadata))
            {
                return(false);
            }
            if (!hasDotNetMetadata)
            {
                return(false);
            }

            return(true);
        }