返回列表 发帖

[原创]防止进程被杀

[watermark]接着上篇贴子:
http://www.thysea.com/lb/cgi-bin/topic.cgi?forum=127&topic=2156
再发一个EXE。在这里,“RealPlay.exe”进程无法被任务管理器所杀。[/watermark]

[原创]防止进程被杀

:41:  :41:  :41: 我怎么看这个进程这么眼熟。。。。

TOP

[原创]防止进程被杀

随便起的一个名字。跟播放器的进程名差不多。只不过播放器的进程名是RealPlayer

TOP

[原创]防止进程被杀

我记得有个病毒就这名字,安全模式下都删不掉,DOS下看不见。。我汗~!

TOP

[原创]防止进程被杀

鸽子 是看不到的`

TOP

[原创]防止进程被杀

下面引用由chinanic2007/01/11 10:40am 发表的内容:
我记得有个病毒就这名字,安全模式下都删不掉,DOS下看不见。。我汗~!
是滴是滴。
不过我这个只是随便起的名字。如有雷同,不甚荣幸!

TOP

[原创]防止进程被杀

楼主我顶死你~~好东西啊~~我写的一个后门程序中隐藏进程是用了个别人写好的隐藏函数,你这个貌似比我这个好~~有时间拿这个来加强下程序哈~~

TOP

[原创]防止进程被杀

从以往楼主公布的代码来看,这第一式肯定是非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到目标进程空间内,从而达到修改的目的。
代码如下:
  1. uses CommCtrl;
  2. function ListView_GetItemText_Ex(hwndLV: HWND; i, iSubItem: Integer;
  3. pszText: PChar; cchTextMax: Integer): Integer;
  4. var
  5. LVItem: TLVItem;
  6. ProcessID, ProcessHD, Temp: DWORD;
  7. MemPoint: Pointer;
  8. begin
  9. GetWindowThreadProcessId(hwndLV, ProcessID);
  10. ProcessHD := OpenProcess(
  11.    PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE,
  12.    FALSE, ProcessID);
  13. MemPoint := VirtualAllocEx(ProcessHD, nil, SizeOf(TLVItem) + cchTextMax,
  14.    MEM_COMMIT, PAGE_READWRITE);
  15. LVItem.iSubItem := iSubItem;
  16. LVItem.cchTextMax := cchTextMax;
  17. LVItem.pszText := PChar(Integer(MemPoint) + SizeOf(TLVItem));
  18.    
  19. WriteProcessMemory(ProcessHD, MemPoint, @LVItem, SizeOf(TLVItem), Temp);
  20. Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Integer(MemPoint));
  21. ReadProcessMemory(ProcessHD, Pointer(Integer(MemPoint) + SizeOf(TLVItem)),
  22.    pszText, cchTextMax, Temp);
  23. VirtualFreeEx(ProcessHD, MemPoint, SizeOf(TLVItem) + cchTextMax, MEM_DECOMMIT);   
  24. VirtualFreeEx(ProcessHD, MemPoint, 0, MEM_RELEASE);
  25. end;
复制代码
这是一个叫刘麻子的人在2005年就写了的。

至此,整个隐藏的过程就呈现在大家眼前拉。
相信大家也对楼主的精神是敬佩有加,能想到此术实在是佩服啊!
另外楼主还设置了一个F12键和防止进程重复运行的东西,这些搂主以前都已经做过且说过了,所以偶就不再多分析拉。
说得不对的地方还请楼主指教哦。。。

TOP

今天才看到这个贴子原来多了楼上朋友的这篇回复。

你说这是一个叫刘麻子的人在2005年写的,不过我要说最后隐藏你说的不对,我原创的方法与他不同。

更新速度暂停和设置F12键,这两个我事先说过,否则你未必会看出来。

但进程隐藏你所说方法与我不同,不过听你说得头头是道,我觉得也是一种看贴子的享受。

TOP

看了你的贴子,我笑得半死,语言表述真逗人啊!

TOP

返回列表 回复 发帖