return To index | download demo package!


Mono: Enumerate .EXE Files In Ubuntu Linux (From Roots To Tips)
--------------------------------------------------------------
alcopaul/brigada ocho
june 05, 2011

So I logged into my Ubuntu partition to finally resolve an issue that I encountered when I was testing the
functions of my .NET virus in Mono. I found out that the directory recursion hangs when finding .exe files.
Today, I was able to solve that problem.

The culprit? /proc and /sys directories. The trick is to exclude them from the directory search.

note: filenamex is the full path of the .exe file.

----------------------------------------------------------------------
using System;
using System.IO;
using System.Reflection;

namespace FindEXEUbuntuLinux
{
    class Program
    {
        static void Main(string[] args)
        {
            Module gxc = Assembly.GetExecutingAssembly().GetModules()[0];
            string self = gxc.FullyQualifiedName;
            string currLoc = Path.GetDirectoryName(self);
            string root = Directory.GetDirectoryRoot(currLoc);
            DirectoryInfo dirs = new DirectoryInfo(@root);
            
            AndLetsRock(dirs);
	    Console.WriteLine("End here..");
	    Console.ReadKey();
        }
        private static void AndLetsRock(DirectoryInfo dir)
        {
            FileInfo[] filesx = dir.GetFiles("*.exe");
            foreach (FileInfo filex in filesx)
            {
                string filenamex = filex.FullName;
                try
                {
                    Console.WriteLine(filenamex); 
                }
                catch
                {
                    continue;
                }
            }
            DirectoryInfo[] dirs = dir.GetDirectories("*.*");
            foreach (DirectoryInfo xdir in dirs)
            {
                try 
                { 
		if (xdir.FullName == "/proc" || xdir.FullName == "/sys")
		{
		continue;
		}
                    AndLetsRock(xdir);
                }
                catch 
                { 
                    continue; 
                }
            }

        }
    }
}
--------------------------------------------------------------------