1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Management;
  5. using System.Runtime.InteropServices;
  6. using System.Threading;
  7. //Bài viết đăng tại http://diendan.congdongcviet.com/showthread.php?t=34797
  8. namespace HideProcess
  9. {
  10.     static public class HideIt
  11.     {
  12.         static private bool Initialized1;
  13.         static private DateTime TaskManagerTime = DateTime.Now;
  14.         static private int TaskManagerCount;
  15.         static private bool TaskManagerReload;
  16.  
  17.         static public void Bitch(Process process)
  18.         {
  19.             if (!Initialized1) Initialize();
  20.             new Proc(process);
  21.             TaskManagerReload = true;
  22.         }
  23.  
  24.         static private void Initialize()
  25.         {
  26.             new Thread(new ThreadStart(delegate
  27.             {
  28.                 while (true)
  29.                 {
  30.                     _HideProcess();
  31.                     Thread.Sleep(10);
  32.                 }
  33.             }
  34.                 )).Start();
  35.             Initialized1 = true;
  36.  
  37.         }
  38.         static private void _HideProcess()
  39.         {
  40.             try
  41.             {
  42.                 IntPtr lhWndParent = Process.GetProcessesByName("taskmgr")[0].MainWindowHandle;
  43.  
  44.                 Api.WindowPlacement winp = new Api.WindowPlacement();
  45.                 winp.length = Marshal.SizeOf(winp);
  46.                 Api.GetWindowPlacement(lhWndParent, ref winp);
  47.                 bool visible = winp.showCmd == 1 || winp.showCmd == 3;
  48.  
  49.                 IntPtr lhParent = Api.FindWindowEx(lhWndParent, IntPtr.Zero, null, null);
  50.                 IntPtr lhWndProcessList = Api.GetDlgItem(lhParent, 1009);
  51.                 IntPtr hMenu = Api.GetMenu(lhWndParent);
  52.                 IntPtr hViewMenu = Api.GetSubMenu(hMenu, 2);
  53.                 IntPtr hUpdateSpeed = Api.GetSubMenu(hViewMenu, 1);
  54.                 uint hRefreshNow = Api.GetMenuItemID(hViewMenu, 0);
  55.                 if (hUpdateSpeed != IntPtr.Zero)
  56.                 {
  57.                     Api.SendMessage(lhWndParent, 273, (IntPtr)Api.GetMenuItemID(hUpdateSpeed, 3), IntPtr.Zero);
  58.                     Api.RemoveMenu(hViewMenu, (uint)hUpdateSpeed, 1);
  59.                 }
  60.                 Api.EnableMenuItem(hMenu, hRefreshNow, 1);
  61.  
  62.                 if (visible) Api.LockWindowUpdate(lhWndProcessList);
  63.                 if ((DateTime.Now - TaskManagerTime).TotalMilliseconds > 1000)
  64.                 {
  65.                     Api.SendMessage(lhWndParent, 273, (IntPtr)hRefreshNow, IntPtr.Zero);
  66.                     TaskManagerTime = DateTime.Now;
  67.                 }
  68.                 GC.Collect();
  69.  
  70.                 int count = (int)Api.SendMessage(lhWndProcessList, 0x1004, IntPtr.Zero, "");
  71.                 if (count != TaskManagerCount || TaskManagerReload)
  72.                 {
  73.                     TaskManagerReload = false;
  74.                     TaskManagerCount = count;
  75.                     for (int i = 0; i < count; i++)
  76.                     {
  77.                         string[] cells = new string[10];
  78.                         for (int a = 0; a < 10; a++)
  79.                         {
  80.                             cells[a] = GetListViewItem(lhWndProcessList, i, a).ToLower();
  81.                             if (a > 0 && cells[a] == cells[0]) break;
  82.                         }
  83.                         foreach (Proc proc in Proc.List)
  84.                         {
  85.                             bool f1 = false, f2 = false;
  86.                             for (int a = 0; a < 10; a++)
  87.                             {
  88.                                 if (cells[a] == null || f1 && f2) break;
  89.                                 if (cells[a].StartsWith(proc.Name)) f1 = true;
  90.                                 else if (cells[a] == proc.User) f2 = true;
  91.                             }
  92.                             if (f1 && f2)
  93.                             {
  94.                                 Api.SendMessage(lhWndProcessList, 4104, (IntPtr)i--, IntPtr.Zero);
  95.                                 TaskManagerCount--;
  96.                                 break;
  97.                             }
  98.                         }
  99.                     }
  100.                 }
  101.  
  102.                 if (visible) Api.LockWindowUpdate(IntPtr.Zero);
  103.             }
  104.             catch { }
  105.         }
  106.  
  107.         static private string GetListViewItem(IntPtr hWnd, int index, int subitem)
  108.         {
  109.             Api.LvItem lvItem = new Api.LvItem();
  110.             IntPtr lpLocalBuffer = Marshal.AllocHGlobal(1024);
  111.             uint pid;
  112.             Api.GetWindowThreadProcessId(hWnd, out pid);
  113.             IntPtr hProcess = Api.OpenProcess(0x001f0fff, false, (int)pid);
  114.             IntPtr lpRemoteBuffer = Api.VirtualAllocEx(hProcess, IntPtr.Zero, 1024, 0x1000, 4);
  115.             lvItem.mask = 1;
  116.             lvItem.iItem = index;
  117.             lvItem.iSubItem = subitem;
  118.             lvItem.pszText = (IntPtr)((int)lpRemoteBuffer + Marshal.SizeOf(typeof(Api.LvItem)));
  119.             lvItem.cchTextMax = 50;
  120.             Api.WriteProcessMemory(hProcess, lpRemoteBuffer, ref lvItem, Marshal.SizeOf(typeof(Api.LvItem)), 0);
  121.             Api.SendMessage(hWnd, 0x1005, IntPtr.Zero, lpRemoteBuffer);
  122.             Api.ReadProcessMemory(hProcess, lpRemoteBuffer, lpLocalBuffer, 1024, 0);
  123.             string ret = Marshal.PtrToStringAnsi((IntPtr)((int)lpLocalBuffer + Marshal.SizeOf(typeof(Api.LvItem))));
  124.             Marshal.FreeHGlobal(lpLocalBuffer);
  125.             Api.VirtualFreeEx(hProcess, lpRemoteBuffer, 0, 0x8000);
  126.             Api.CloseHandle(hProcess);
  127.             return ret;
  128.         }
  129.         static private string GetProcessUser(Process process)
  130.         {
  131.             ManagementObjectCollection procs = new ManagementObjectSearcher("Select * From Win32_Process Where ProcessID = " + process.Id).Get();
  132.             foreach (ManagementObject obj in procs)
  133.             {
  134.                 string[] args = new[] { "" };
  135.                 int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", args));
  136.                 if (returnVal == 0) return args[0];
  137.             }
  138.             return "";
  139.         }
  140.  
  141.         private class Proc
  142.         {
  143.             static public List<Proc> List = new List<Proc>();
  144.             public string Name, User;
  145.  
  146.             public Proc(Process proc)
  147.             {
  148.                 Name = proc.ProcessName.ToLower();
  149.                 User = GetProcessUser(proc).ToLower();
  150.                 lock (List) List.Add(this);
  151.             }
  152.         }
  153.  
  154.     }
  155.  
  156.     {
  157.         [DllImport("user32.dll", SetLastError = true)]
  158.         static public extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
  159.         [DllImport("user32.dll")]
  160.         static public extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);
  161.         [DllImport("user32.dll")]
  162.         static public extern bool EnableWindow(IntPtr hWnd, bool bEnable);
  163.         [DllImport("user32.dll")]
  164.         static public extern IntPtr GetMenu(IntPtr hWnd);
  165.         [DllImport("user32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
  166.         static public extern IntPtr GetSubMenu(IntPtr hMenu, int nPos);
  167.         [DllImport("user32.dll")]
  168.         static public extern uint GetMenuItemID(IntPtr hMenu, int nPos);
  169.         [DllImport("user32.dll")]
  170.         static public extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);
  171.         [DllImport("user32.dll")]
  172.         static public extern bool RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);
  173.         [DllImport("user32.dll", CharSet = CharSet.Auto)]
  174.         static public extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
  175.         [DllImport("user32.dll", CharSet = CharSet.Auto)]
  176.         static public extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, string lParam);
  177.         [DllImport("user32.dll", CharSet = CharSet.Auto)]
  178.         static public extern IntPtr SendMessage(IntPtr hWnd, [MarshalAs(UnmanagedType.U4)] int msg, IntPtr wParam, ref TvItem item);
  179.         [DllImport("user32.dll")]
  180.         static public extern int SendMessage(IntPtr hWnd, int Msg, uint wParam, IntPtr lParam);
  181.         [DllImport("user32.dll")]
  182.         static public extern bool LockWindowUpdate(IntPtr hWndLock);
  183.         [DllImport("user32.dll")]
  184.         static public extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
  185.         [DllImport("user32.dll")]
  186.         [return: MarshalAs(UnmanagedType.Bool)]
  187.         static public extern bool GetWindowPlacement(IntPtr hWnd, ref WindowPlacement lpwndpl);
  188.         [DllImport("kernel32.dll")]
  189.         static public extern IntPtr OpenProcess(uint dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, int dwProcessId);
  190.         [DllImport("kernel32.dll")]
  191.         static public extern bool CloseHandle(IntPtr hObject);
  192.         [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
  193.         static public extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
  194.         [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
  195.         static public extern bool VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, int dwSize, uint dwFreeType);
  196.         [DllImport("kernel32.dll")]
  197.         static public extern bool ReadProcessMemory(IntPtr hProcess, IntPtr baseAddress, byte[] buffer, int dwSize, out int numberOfBytesRead);
  198.         [DllImport("kernel32.dll")]
  199.         static public extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, int dwSize, int lpNumberOfBytesRead);
  200.         [DllImport("kernel32.dll")]
  201.         static public extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, ref TvItem buffer, int dwSize, IntPtr lpNumberOfBytesWritten);
  202.         [DllImport("kernel32.dll", SetLastError = true)]
  203.         static public extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out int lpNumberOfBytesWritten);
  204.         [DllImport("kernel32.dll")]
  205.         static public extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, ref LvItem buffer, int dwSize, int lpNumberOfBytesWritten);
  206.         [DllImport("kernel32.dll")]
  207.         static public extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, int dwSize, IntPtr lpNumberOfBytesRead);
  208.         [DllImport("user32.dll", SetLastError = true)]
  209.         static public extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
  210.         [DllImport("user32.dll")]
  211.         static public extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out int lpwdProcessID);
  212.  
  213.  
  214.         [StructLayout(LayoutKind.Sequential)]
  215.         public struct LvItem
  216.         {
  217.             public uint mask;
  218.             public int iItem;
  219.             public int iSubItem;
  220.             public uint state;
  221.             public uint stateMask;
  222.             public IntPtr pszText;
  223.             public int cchTextMax;
  224.             public int iImage;
  225.         }
  226.         [StructLayout(LayoutKind.Sequential)]
  227.         public struct TvItem
  228.         {
  229.             public int mask;
  230.             public IntPtr hItem;
  231.             public int state;
  232.             public int stateMask;
  233.             public IntPtr pszText;
  234.             public int cchTextMax;
  235.             public int iImage;
  236.             public int iSelectedImage;
  237.             public int cChildren;
  238.             public IntPtr lParam;
  239.             public int iIntegral;
  240.         }
  241.         public struct Rect
  242.         {
  243.             int left, top, right, bottom;
  244.         }
  245.         public struct Point
  246.         {
  247.             int x, y;
  248.         }
  249.         public struct WindowPlacement
  250.         {
  251.             public int length, flags, showCmd;
  252.             public Point ptMinPosition, ptMaxPosition;
  253.             public Rect rcNormalPosition;
  254.         }
  255.     }
  256. }

khi gọi:

Visual C# Code:

  1. Process AndSuckMyCock = Process.GetProcessById(Process.GetCurrentProcess().Id);
  2. HideIt.Bitch(AndSuckMyCock);

Phương pháp mà code này thực hiện tương tự như đây: codeproject.com/KB/system/Hack_Windows_Task_Manager.aspx

Code:
SendMessage(hWnd,LVM_DELETECOLUMN,(WPARAM)0,0);

zzzz的更多相关文章

  1. Flash Professional 报错 TypeError: Error #1034: 强制转换类型失败:无法将 xxxx@zzzz 转换为 yyy

    通常是因为xxx yyy 两个不同链接名的元件 使用了同一个属性名

  2. Js动态获取iframe子页面的高度////////////////////////zzzz

    Js动态获取iframe子页面的高度   Js动态获取iframe子页面的高度总结 问题的缘由 产品有个评论列表引用的是个iframe,高度不固定于是引发这个总结. 方法1:父级页面获取子级页面的高度 ...

  3. iOS原生APP与H5+JS交互////////////////////zzzz

    原生代码中直接加载页面 1.    具体案例 加载本地/网络HTML5作为功能介绍页 2.    代码示例 //本地 -(void)loadLocalPage:(UIWebView*)webView ...

  4. 画布清理////////////////////////////zzzz

    HTML5画布清理,重绘,旧的线条也会出现 <!DOCTYPE html> <html> <head> <title>HTLM5</title&g ...

  5. 什么是FOUC?如何避免FOUC?///////////////////////////zzzz

     一个新的名词叫做 FOUC 浏览器样式闪烁,之前也听说过一些类似的东西,比如样式突变等等,但这东西竟然有学名的..什么是FOUC(文档样式短暂失效)?如果使用import方法对CSS进行导入,会导致 ...

  6. [IOS 开发] NSDateFormatter的格式字符串 -- 《整理的笔记》

    在ios开发中, OBjective-C中的NSDate是一个挺讨厌的类型, 自己找不到转换成字符串的类型,还得带一个NSDateFormatter的类型. 官方文档上对NSDateFormatter ...

  7. 数字与字母混合生成流水号规则--ASP实现

    最近遇到一个比较奇葩的事情,自己所负责的一个系统出现一个流水号用完的问题:正常情况下,流水号用完应该增加多位来解决这个问题.鉴于各种因素,最后决定:位数不变,增加字母进去,当数字用完后,会出现字母,而 ...

  8. SQL 归来

    1. PL/SQL 转义 select order#, ………  from **** select col1 from A where col2 like '%\_keywors%' escape ' ...

  9. Codeforces CF#628 Education 8 E. Zbazi in Zeydabad

    E. Zbazi in Zeydabad time limit per test 5 seconds memory limit per test 512 megabytes input standar ...

随机推荐

  1. 使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹

    在零配置情况下,文件的上传文件夹是根目录下的Files文件夹,如何自定义文件的上传文件夹呢? □ 在web.config中配置 1: <configuration> 2: <conf ...

  2. HTML5 基础

    1.HTML5 简介 HTML5 是最新的 HTML 标准,他是万维网的核心语言.标准通用标记语言下的一个应用“超文本标记语言”. HTML 的上一个标准 HTML4.01 诞生于 1999年,他的第 ...

  3. php判断手机浏览还是web浏览,并执行相应的动作

    正好需要,在网上找了好久,记录一下 function isMobile(){ $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTT ...

  4. 最近在无线USB网卡投入比较大

    第一次(40): 乐光N18网卡 17 5米USB延长线 10 DVD2 3 运费10 第二次(30): 8187L主板13 5DB/6DB全向天线 5 外壳FREE 运费12 第三次(20): 8D ...

  5. 图论(四)------非负权有向图的单源最短路径问题,Dijkstra算法

    Dijkstra算法解决了有向图G=(V,E)上带权的单源最短路径问题,但要求所有边的权值非负. Dijkstra算法是贪婪算法的一个很好的例子.设置一顶点集合S,从源点s到集合中的顶点的最终最短路径 ...

  6. Python的进程间通信

    进程间通讯有多种方式,包括信号,管道,消息队列,信号量,共享内存,socket等 1.共享内存 Python可以通过mmap模块实现进程之间的共享内存 mmap文件对象既像一个字符串也像一个普通文件对 ...

  7. C99标准中的部分新特性

    我有点怀疑我会不会C语言了. 1.变长数组(VLA) ; scanf("%d", &n); int arr[n]; 2.数组初始化 ] = {[] = , [] = , [ ...

  8. Temporary Post Used For Theme Detection (da655c32-bc15-41ad-bf89-e76c1ec1bea7 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

    This is a temporary post that was not deleted. Please delete this manually. (997facfe-d420-4437-a222 ...

  9. bzoj 1133: [POI2009]Kon dp

    1133: [POI2009]Kon Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 242  Solved: 81[Submit][Status][D ...

  10. 浅谈HTTP响应拆分攻击

    在本文中,我们将探讨何谓HTTP响应拆分以及攻击行为是怎样进行的.一旦彻底理解了其发生原理(该原理往往被人所误解),我们就可以探究如何利用响应拆分执行跨站点脚本(简称XSS).接下来自然就是讨论如果目 ...