从以往楼主公布的代码来看,这第一式肯定是非FindWindow(0, "Windows 任务管理器");莫属啊。
咦,下面呢。
那这第二式呢,想起楼主以前搞的一个什么记事本的东东,无非是要找到菜单中名字为“查看”的那个按扭拉,然后设置更新速度为暂停,好,那就GetMenu(前面找到的任务管理器的句柄),得到菜单句柄,再GetSubMenu(Menu的句柄,2)(2是第三个查看的pos拉),得到“查看”menu的句柄拉,再来,目标是要更新速度暂停。继续GetSubMenu(“查看”Menu的句柄,1)(1是“更新速度”的子菜单的标志拉),哦,,,,现在快到暂停咯,嘿嘿,为了要暂停,得向那个子菜单的父窗口发一个WM_COMMAND消息呀,窗口句柄有了,还差子菜单ID呢,来,GetMenuItemId(“更新速度的句柄”,2);(3是最后一个“暂停“的pos拉),现在可以拉,发送消息SendMessage(hwnd, WM_COMMAND, 子菜单ID,0),咦,果然暂停了哦。。。。
第三式:
真累呀,就是要”隐藏“自身拉。怎么”隐藏“呢?
楼主自有高招,偶简单分析下了,这应该还是楼主比较强悍的地方啊。如果错误,楼主原谅并请指出哦。
可以由spy++知道任务管理器的显示列表是syslistview32,好,用FindWindowEx(父窗口句柄,NULL,"syslistview32", NULL),好拉,这下得到显示控件的句柄拉。
哎,下面一步就重要咯,找到显示列表中自己的位置,网上有这样一个代码可以做到,是向大概意思就是向目标进程(也就是任务管理器拉,获取其句柄(这里就不多说了GetWindowThreadProcess,OpenProcess,然后在其地址空间分配一段内存,在这这段地址里伪造一个LVITEM结构,然后向目标窗口发送LVM_GETITEMTEXT消息,其接受地址就指向刚才在目标进程中申请并伪造好相关结构的地址。然后再从那段地址中ReadProcessMemory获取ITEMTEXT信息.同样了,楼主要实现的所谓“隐藏”自身也是这样实现的。通过LVM_SETITEMTEXT消息,实现把要修改的名字WriteProcessMemory到目标进程空间内,从而达到修改的目的。
代码如下:- uses CommCtrl;
- function ListView_GetItemText_Ex(hwndLV: HWND; i, iSubItem: Integer;
- pszText: PChar; cchTextMax: Integer): Integer;
- var
- LVItem: TLVItem;
- ProcessID, ProcessHD, Temp: DWORD;
- MemPoint: Pointer;
- begin
- GetWindowThreadProcessId(hwndLV, ProcessID);
- ProcessHD := OpenProcess(
- PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE,
- FALSE, ProcessID);
- MemPoint := VirtualAllocEx(ProcessHD, nil, SizeOf(TLVItem) + cchTextMax,
- MEM_COMMIT, PAGE_READWRITE);
- LVItem.iSubItem := iSubItem;
- LVItem.cchTextMax := cchTextMax;
- LVItem.pszText := PChar(Integer(MemPoint) + SizeOf(TLVItem));
-
- WriteProcessMemory(ProcessHD, MemPoint, @LVItem, SizeOf(TLVItem), Temp);
- Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Integer(MemPoint));
- ReadProcessMemory(ProcessHD, Pointer(Integer(MemPoint) + SizeOf(TLVItem)),
- pszText, cchTextMax, Temp);
- VirtualFreeEx(ProcessHD, MemPoint, SizeOf(TLVItem) + cchTextMax, MEM_DECOMMIT);
- VirtualFreeEx(ProcessHD, MemPoint, 0, MEM_RELEASE);
- end;
复制代码 这是一个叫刘麻子的人在2005年就写了的。
至此,整个隐藏的过程就呈现在大家眼前拉。
相信大家也对楼主的精神是敬佩有加,能想到此术实在是佩服啊!
另外楼主还设置了一个F12键和防止进程重复运行的东西,这些搂主以前都已经做过且说过了,所以偶就不再多分析拉。
说得不对的地方还请楼主指教哦。。。
|