Exemplo n.º 1
0
        /// <summary>
        /// Enables this application to be called from a SymLink without assembly load failures.
        /// </summary>
        public static void EnableAssemblyLoadFix()
        {
            string exeName     = ProcessHelper.GetOwnExeName();
            string exeNamePath = Path.GetDirectoryName(exeName);

            RealRoot = Path.GetDirectoryName(ResolveSymbolicLink(exeName));

            if (!string.IsNullOrEmpty(RealRoot) && RealRoot != exeNamePath)
            {
                AppDomain.CurrentDomain.SetData("APPBASE", RealRoot); // I don't know if this line has any effect at all. Feel free to delete it if you have good reason.
                AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Naive Shim Detection.
        /// </summary>
        /// <param name="parent"></param>
        /// <returns></returns>
        public static bool IsShim(Process parent)
        {
            try
            {
                var fileName = parent.MainModule.FileName;

                if (fileName.NotIn(ProcessHelper.GetOwnExeName()) &&
                    fileName.In("sudo.exe", "gsudo.exe"))
                {
                    return(true);
                }
            }
            catch { } // fails to get parent.MainModule if our parent process is elevated and we are not.

            return(false);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Naive Shim Detection.
        /// </summary>
        /// <param name="parent"></param>
        /// <returns></returns>
        public static bool IsShimOrWrapper(Process parent)
        {
            try
            {
                var fileName = parent.MainModule.FileName.ToUpperInvariant();

                if (!fileName.Equals(ProcessHelper.GetOwnExeName(), StringComparison.OrdinalIgnoreCase) && (
                        fileName.EndsWith("\\SUDO.EXE", StringComparison.Ordinal) ||
                        fileName.EndsWith("\\GSUDO.EXE", StringComparison.Ordinal) ||
                        fileName.EndsWith("\\BASH.EXE", StringComparison.Ordinal) // MINGW64/MSYS wrapper
                        )
                    )
                {
                    return(true);
                }
            }
            catch { } // fails to get parent.MainModule if our parent process is elevated and we are not.

            return(false);
        }