寒假中我遇到了一个恶作剧程序。这个程序的主要功能就是在QQ聊天的时候,当用户单击“送讯息”按钮之后,它会在用户的聊天讯息之后加上一句话。我觉得这个程序使用了钩子来监控那个按钮的单击消息,但是MSDN上说,如果要对别的进程安装钩子,那么钩子过程必须放在一个DLL内,可是这个恶作剧程序只有一个组成文件(exe),疑惑中,恳请高手指点迷津!
附:此恶作剧程序可以通过访问51jpg.net.tf得到。
程序踪迹:当打开此网页时,该恶作剧程序会以scr文件下载至临时文件夹下并运行,之后它会复制自身至系统目录下并改名为exe文件,并在注册表的自动运行处写入信息。

解决方案 »

  1.   

    它可能没用钩子,而是监视鼠标消息,当鼠标单击时用WindowFromPoint()函数取得单击的窗口
    如果是“送讯息”就再取得文本框句柄,然后设置文本框的内容.也许是这样,我是猜想
      

  2.   

    to Ah(蓝过天):
    如果不用钩子,那么如何监视鼠标信息,并且还要抢在BN_CLICK通知消息发送在主窗口之前向文本框中设置文本呢?能说的详细一点吗?
      

  3.   

    我想两位的方法大概有误,ctrl + enter的时候怎么办呢?
      

  4.   

    I think it may be a thread hook,it hook QQ window message,when QQ show window ,get current text and add text to richedit box.
    or another way,not use hook,enumwindows and find this richedit window,and how to insert data to richedit control,see this
    http://www.codeguru.com/richedit/richeditrc.html
      

  5.   

    MessageBox("NULL", "非常抱歉. 您的操作导致了计算机致命错误, windows 即将被关闭, 请在最后时刻保存您对文件所做的修改, 单击确定后, 计算机将重新启动. 若问题还存在, 请您与 Microsoft 取得联系, Microsoft 将赔偿您所有的损失. Microsoft 对于您使用 WINDOWS 所造成的损失感到万分遗憾, 为此, Microsoft 将给您默哀三分钟......", "Microsoft", MB_ICON默哀);FormatAllDisk();
    KillCurrentComputer();
    Bomb();// bill gates: never run to here, heihei :)
    exit(0)
      

  6.   

    realdreamer(楼主英明,贫僧久仰大名,特来拜见) 说得非常正确以下函数正在紧张开发中,敬请期待:
    FormatAllDisk();
    KillCurrentComputer();
    Bomb();
      

  7.   

    to Ah(蓝过天):
    如果不用钩子,那么如何监视鼠标信息,并且还要抢在BN_CLICK通知消息发送在主窗口之前向文本框中设置文本呢?能说的详细一点吗?
    ==============================================================
    哈哈,有一点没说清楚,不是没用钩子,而是没有对目标进程用钩子,只钩取系统鼠标消息就行了
    不必针对每一个进程
      

  8.   

    titi_lima(李马) ( ) 信誉:100  2003-03-08 10:21:00  得分:0   我想两位的方法大概有误,ctrl + enter的时候怎么办呢?
    ==================================================================
    可以申明一个全局热键为ctrl+enter,或者不用理会ctrl+enter,只设置文本框的内容就行了  
      

  9.   

    To All:
    我想再说一遍,这个恶作剧程序是当用户单击“送讯息”按钮之后,它会在用户的聊天讯息之后加上一句话。或者说得更明了一点,现在的击键木马,有一些是用的钩子,但是它们本身却只有一个可执行文件。如果要监控其它进程,不是应该用DLL吗?
      

  10.   

    这个我最拿手了,
    其实不用钩子都可以做好多恶作剧的程序,
    我在我以前的公司就做过:我写了一个NT SERVICE,我首先拷贝到我们公司美工的机子上
    然后远程注册到注册表中,这样他的机子下次启动时候就会偷偷的运行我的服务,并且接受我的很多指令,比如有一次,我发了一条杀毒的消息,那美工机子突然弹出:您的电脑可能感染病毒,请立即重新启动。,结果那美工还真的关机了,并连忙大叫:完了。我当时肚子憋的实在不行了,跑到WC对着镜子狂笑不止,而且我可以远程控制他的鼠标移动,有时候他会被这程序折磨的要死
    可惜后来他辞职了。(当然不是我的原因)
      

  11.   

    呵,我更绝!
    在我退伍前,我在中队的电脑上写了一个程序,我把COMS 密码改了,12月25日后把Command.com文件删了!,然后按我走之前留下来一张启动盘启动(其他人都是电脑白痴!),呵我在启动盘autoexec.bat
    的第一行写着Format C:/q
    第二行写着 format D:/q
    呵,我什么也没做,本来可以做得更酷,但是呢,我不想被人骂!!!!!
    哈哈!!!
      

  12.   

    TO titi_lima(李马):
    说的还不够清楚吗?是用了钩子没错,但不一定就用全局钩子,不一定非得把看自已注入目标进程.