庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>安全技术>黑客攻防>黑客编程>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

探测Win2K/XP/2003本机系统信息 下

 作者:本站收集   日期:2005-5-23
字号选择〖 〗/ 双击滚屏 单击停止   
VOID Usage()
{
printf("Usage:\tT-PMList  [-e] │ [-s PID]\n");
printf("  -e\t  Enumerate All Processes\n");
printf("  -s PID  Show Special Process Information with PID\n\n");
return ;
}

#endif

2.T-PMPerf的头文件源代码:

#ifndef T_PMPERF_H
#define T_PMPERF_H


#include "windows.h"
#include "stdio.h"


#define SYSTEM_PERF_INFO       0x02
#define SYSTEM_PROC_TIME       0x08
#define SYSTEM_PAGE_INFO       0x12
#define SYSTEM_CACHE_INFO      0x15
#define MAX_INFO_BUF_LEN       0x500000
#define STATUS_SUCCESS         ((NTSTATUS)0x00000000L)


typedef LONG  NTSTATUS;
typedef DWORD SYSTEM_INFORMATION_CLASS;


typedef struct _LSA_UNICODE_STRING
{
USHORT  Length;
USHORT  MaximumLength;
PWSTR   Buffer;
}LSA_UNICODE_STRING,*PLSA_UNICODE_STRING;
typedef LSA_UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING;
typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
LARGE_INTEGER  IdleTime;
LARGE_INTEGER  ReadTransferCount;
LARGE_INTEGER  WriteTransferCount;
LARGE_INTEGER  OtherTransferCount;
ULONG      ReadOperationCount;
ULONG      WriteOperationCount;
ULONG      OtherOperationCount;
ULONG      AvailablePages;
ULONG      TotalCommittedPages;
ULONG      TotalCommitLimit;
ULONG      PeakCommitment;
ULONG      PageFaults;
ULONG      WriteCopyFaults;
ULONG      TransitionFaults;
ULONG      Reserved1;
ULONG      DemandZeroFaults;
ULONG      PagesRead;
ULONG      PageReadIos;
ULONG      Reserved2[2];
ULONG      PagefilePagesWritten;
ULONG      PagefilePageWriteIos;
ULONG      MappedFilePagesWritten;
ULONG      MappedFileWriteIos;
ULONG      PagedPoolUsage;
ULONG      NonPagedPoolUsage;
ULONG      PagedPoolAllocs;
ULONG      PagedPoolFrees;
ULONG      NonPagedPoolAllocs;
ULONG      NonPagedPoolFress;
ULONG      TotalFreeSystemPtes;
ULONG      SystemCodePage;
ULONG      TotalSystemDriverPages;
ULONG      TotalSystemCodePages;
ULONG      SmallNonPagedLookasideListAllocateHits;
ULONG      SmallPagedLookasideListAllocateHits;
ULONG      Reserved3;
ULONG      MmSystemCachePage;
ULONG      PagedPoolPage;
ULONG      SystemDriverPage;
ULONG      FastReadNoWait;
ULONG      FastReadWait;
ULONG      FastReadResourceMiss;
ULONG      FastReadNotPossible;
ULONG      FastMdlReadNoWait;
ULONG      FastMdlReadWait;
ULONG      FastMdlReadResourceMiss;
ULONG      FastMdlReadNotPossible;
ULONG      MapDataNoWait;
ULONG      MapDataWait;
ULONG      MapDataNoWaitMiss;
ULONG      MapDataWaitMiss;
ULONG      PinMappedDataCount;
ULONG      PinReadNoWait;
ULONG      PinReadWait;
ULONG      PinReadNoWaitMiss;
ULONG      PinReadWaitMiss;
ULONG      CopyReadNoWait;
ULONG      CopyReadWait;
ULONG      CopyReadNoWaitMiss;
ULONG      CopyReadWaitMiss;
ULONG      MdlReadNoWait;
ULONG      MdlReadWait;
ULONG      MdlReadNoWaitMiss;
ULONG      MdlReadWaitMiss;
ULONG      ReadAheadIos;
ULONG      LazyWriteIos;
ULONG      LazyWritePages;
ULONG      DataFlushes;
ULONG      DataPages;
ULONG      ContextSwitches;
ULONG      FirstLevelTbFills;
ULONG      SecondLevelTbFills;
ULONG      SystemCall;
}SYSTEM_PERFORMANCE_INFORMATION,*PSYSTEM_PERFORMANCE_INFORMATION;



typedef struct __SYSTEM_PROCESSOR_TIMES
{
LARGE_INTEGER IdleTime;
LARGE_INTEGER KernelTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER DpcTime;
LARGE_INTEGER InterruptTime;
ULONG     InterruptCount;
}SYSTEM_PROCESSOR_TIMES,*PSYSTEM_PROCESSOR_TIMES;


typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
ULONG NetxEntryOffset;
ULONG CurrentSize;
ULONG TotalUsed;
ULONG PeakUsed;
UNICODE_STRING FileName;
}SYSTEM_PAGEFILE_INFORMATION,*PSYSTEM_PAGEFILE_INFORMATION;


typedef struct _SYSTEM_CACHE_INFORMATION
{
ULONG SystemCacheWsSize;
ULONG SystemCacheWsPeakSize;
ULONG SystemCacheWsFaults;
ULONG SystemCacheWsMinimum;
ULONG SystemCacheWsMaximum;
ULONG TransitionSharedPages;
ULONG TransitionSharedPagesPeak;
ULONG Reserved[2];
}SYSTEM_CACHE_INFORMATION,*PSYSTEM_CACHE_INFORMATION;


typedef NTSTATUS (__stdcall * NTQUERYSYSTEMINFORMATION)
         (IN   SYSTEM_INFORMATION_CLASS,
   IN OUT PVOID,
   INT  ULONG,
        OUT  PULONG OPTION);
NTQUERYSYSTEMINFORMATION NtQuerySystemInformation;


DWORD PerfInfo()
{
SYSTEM_PERFORMANCE_INFORMATION SystemPerfInfo;
HMODULE     hNtDll = NULL;
DWORD       dwNumberBytes;
DWORD       dwReturnLength;
NTSTATUS    Status;
LONGLONG    llTempTime;


__try
{
hNtDll = LoadLibrary("NtDll.dll");
      if(hNtDll == NULL)
{
        printf("LoadLibrary Error: %d\n",GetLastError());
       __leave;
}


NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)
GetProcAddress(hNtDll,
"NtQuerySystemInformation");
if(NtQuerySystemInformation == NULL)
{
printf("GetProcAddress for NtQuerySystemInformation Error: %d\n",GetLastError());
__leave;
}


dwNumberBytes = sizeof(SYSTEM_PERFORMANCE_INFORMATION);
Status = NtQuerySystemInformation(SYSTEM_PERF_INFO,
                &SystemPerfInfo,
dwNumberBytes,
&dwReturnLength);
if(Status != STATUS_SUCCESS)
{
printf("NtQuerySystemInformation for Performance Error: %d\n",GetLastError());
__leave;
}


printf("IdleTime:\t\t");
llTempTime  = SystemPerfInfo.IdleTime.QuadPart;
llTempTime /= 10000;
printf("%d:",llTempTime/(60*60*1000));
llTempTime %= 60*60*1000;
printf("%.2d:",llTempTime/(60*1000));
llTempTime %= 60*1000;
printf("%.2d.",llTempTime/1000);
llTempTime %= 1000;
printf("%.3d\n",llTempTime);


printf("ReadOperationCount:\t%-10d\t",SystemPerfInfo.ReadOperationCount);
printf("ReadTransferCount:\t%d\n",SystemPerfInfo.ReadTransferCount);
printf("WriteOperationCount:\t%-10d\t",SystemPerfInfo.WriteOperationCount);
printf("WriteTransferCount:\t%d\n",SystemPerfInfo.WriteTransferCount);
printf("OtherOperationCount:\t%-10d\t",SystemPerfInfo.OtherOperationCount);
printf("OtherTransferCount:\t%d\n",SystemPerfInfo.OtherTransferCount);


printf("AvailablePages:\t\t%-10d\t",SystemPerfInfo.AvailablePages);
printf("TotalCommittedPage:\t%d\n",SystemPerfInfo.TotalCommittedPages);
printf("CommitLimit:\t\t%-10d\t",SystemPerfInfo.TotalCommitLimit);
printf("PeakCommitment:\t\t%d\n",SystemPerfInfo.PeakCommitment);


printf("PageFault:\t\t%-10d\t",SystemPerfInfo.PageFaults);
printf("WriteCopyFault:\t\t%d\n",SystemPerfInfo.WriteCopyFaults);
printf("TransitionFault:\t%-10d\t",SystemPerfInfo.TransitionFaults);
printf("DemandZeroFault:\t%d\n",SystemPerfInfo.DemandZeroFaults);


printf("PagesRead:\t\t%-10d\t",SystemPerfInfo.PagesRead);
printf("PageReadIos:\t\t%d\n",SystemPerfInfo.PageReadIos);
printf("PagesWritten:\t\t%-10d\t",SystemPerfInfo.PagefilePagesWritten);
printf("PageWriteIos:\t\t%d\n",SystemPerfInfo.PagefilePageWriteIos);
printf("MappedFilePagesWritten:\t%-10d\t",
SystemPerfInfo.MappedFilePagesWritten);
printf("MappedFileWriteIos:\t%d\n",SystemPerfInfo.MappedFileWriteIos);


printf("PagedPoolUsage:\t\t%-10d\t",SystemPerfInfo.PagedPoolUsage);
printf("NonPagedPoolUsage:\t%d\n",SystemPerfInfo.NonPagedPoolUsage);
printf("PagedPoolAllocs:\t%-10d\t",SystemPerfInfo.PagedPoolAllocs);
printf("NonPagedPoolAllocs:\t%d\n",SystemPerfInfo.NonPagedPoolAllocs);
printf("PagedPoolFrees:\t\t%-10d\t",SystemPerfInfo.PagedPoolFrees);
printf("NonPagedPoolFrees:\t%d\n",SystemPerfInfo.NonPagedPoolFress);


printf("SystemCodePage:\t\t%-10d\t",SystemPerfInfo.SystemCodePage);
printf("TotalSystemCodePage:\t%d\n",SystemPerfInfo.TotalSystemCodePages);
printf("TotalFreeSysPTE:\t%-10d\t",SystemPerfInfo.TotalFreeSystemPtes);
printf("TotalSystemDriverPages:\t%d\n",
SystemPerfInfo.TotalSystemDriverPages);
printf("PagedPoolPage:\t\t%-10d\t",SystemPerfInfo.PagedPoolPage);
printf("SystemDriverPage:\t%d\n",SystemPerfInfo.SystemDriverPage);


printf("FastReadWait:\t\t%-10d\t",SystemPerfInfo.FastReadWait);
printf("FastReadNoWait:\t\t%d\n",SystemPerfInfo.FastReadNoWait);
printf("FastReadNoPossible:\t%-10d\t",SystemPerfInfo.FastReadNotPossible);
printf("FastReadResourceMiss:\t%d\n",SystemPerfInfo.FastReadResourceMiss);
printf("FastMdlReadWait:\t%-10d\t",SystemPerfInfo.FastMdlReadWait);
printf("FastMdlReadNoWait:\t%d\n",SystemPerfInfo.FastMdlReadNoWait);
printf("FastMdlReadNotPossible:\t%-10d\t",
SystemPerfInfo.FastMdlReadNotPossible);
printf("FastMdlReadResourceMiss:%d\n",
SystemPerfInfo.FastMdlReadResourceMiss);



printf("MapDataWait:\t\t%-10d\t",SystemPerfInfo.MapDataWait);
printf("MapDataNoWait:\t\t%d\n",SystemPerfInfo.MapDataNoWait);
printf("MapDataWaitMiss:\t%-10d\t",SystemPerfInfo.MapDataWaitMiss);
printf("MapDataNoWaitMiss:\t%d\n",SystemPerfInfo.MapDataNoWaitMiss);


printf("ReadAheadIos:\t\t%-10d\t",SystemPerfInfo.ReadAheadIos);
printf("PinMappedDataCount:\t%d\n",SystemPerfInfo.PinMappedDataCount);
printf("PinReadWait:\t\t%-10d\t",SystemPerfInfo.PinReadWait);
printf("PinReadNoWait:\t\t%d\n",SystemPerfInfo.PinReadNoWait);
printf("PinReadWaitMiss:\t%-10d\t",SystemPerfInfo.PinReadWaitMiss);
printf("PinReadNoWaitMiss:\t%d\n",SystemPerfInfo.PinReadNoWaitMiss);


printf("CopyReadWait:\t\t%-10d\t",SystemPerfInfo.CopyReadWait);
printf("CopyReadNoWait:\t\t%d\n",SystemPerfInfo.CopyReadNoWait);
printf("CopyReadWaitMiss:\t%-10d\t",SystemPerfInfo.CopyReadWaitMiss);
printf("CopyReadNoWaitMiss:\t%-10d\n",SystemPerfInfo.CopyReadNoWaitMiss);
printf("MdlReadWait:\t\t%-10d\t",SystemPerfInfo.MdlReadWait);
printf("MdlReadNoWait:\t\t%d\n",SystemPerfInfo.MdlReadNoWait);
printf("MdlReadWaitMiss:\t%-10d\t",SystemPerfInfo.MdlReadWaitMiss);
printf("MdlReadNoWaitMiss:\t%d\n",SystemPerfInfo.MdlReadNoWaitMiss);


printf("LazyWriteIos:\t\t%-10d\t",SystemPerfInfo.LazyWriteIos);
printf("LazyWritePages:\t\t%d\n",SystemPerfInfo.LazyWritePages);
printf("DataPages:\t\t%-10d\t",SystemPerfInfo.DataPages);
printf("DataFlushes:\t\t%d\n",SystemPerfInfo.DataFlushes);
printf("FirstLevelTbFills:\t%-10d\t",SystemPerfInfo.FirstLevelTbFills);
printf("SecondLevelTbFills:\t%d\n",SystemPerfInfo.SecondLevelTbFills);
printf("ContextSwitches:\t%-10d\t",SystemPerfInfo.ContextSwitches);
printf("SytemCall:\t\t%d\n",SystemPerfInfo.SystemCall);


printf("MemorySystemCachePage:\t\t\t%d\n",
SystemPerfInfo.MmSystemCachePage);
printf("SmallPagedLookasideListAllocateHits:\t%d\n",
SystemPerfInfo.SmallPagedLookasideListAllocateHits);
printf("SmallNonPagedLookasideListAllocateHits:\t%d\n",
SystemPerfInfo.SmallNonPagedLookasideListAllocateHits);


}
__finally
{
if(hNtDll != NULL)
{
FreeLibrary(hNtDll);
}
}


return 0;
}


DWORD ProcTime()
{
SYSTEM_PROCESSOR_TIMES  SystemProcTime;
HMODULE         hNtDll = NULL;
DWORD           dwNumberBytes;
DWORD           dwReturnLength;
NTSTATUS        Status;
LONGLONG        llTempTime;
__try
{
hNtDll = LoadLibrary("NtDll.dll");
      if(hNtDll == NULL)
{
     printf("LoadLibrary Error: %d\n",GetLastError());
      __leave;
}



NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)
GetProcAddress(hNtDll,"NtQuerySystemInformation");
if(NtQuerySystemInformation == NULL)
{
printf("GetProcAddress for NtQuerySystemInformation Error: %d\n",GetLastError());
__leave;
}


dwNumberBytes = sizeof(SYSTEM_PROCESSOR_TIMES);
NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)
GetProcAddress(hNtDll,"NtQuerySystemInformation");
if(NtQuerySystemInformation == NULL)
{
printf("GetProcAddress Error: %d\n",GetLastError());
__leave;
}


Status = NtQuerySystemInformation(SYSTEM_PROC_TIME,
                &SystemProcTime,
dwNumberBytes,
&dwReturnLength);
if(Status != STATUS_SUCCESS)
{
printf("NtQuerySystemInformation for Processor
Time Error: %d\n",GetLastError());
__leave;
}


printf("IdleTime:\t\t");
llTempTime  = SystemProcTime.IdleTime.QuadPart;
llTempTime /= 10000;
printf("%d:",llTempTime/(60*60*1000));
llTempTime %= 60*60*1000;
printf("%.2d:",llTempTime/(60*1000));
llTempTime %= 60*1000;
printf("%.2d.",llTempTime/1000);
llTempTime %= 1000;
printf("%.3d\n",llTempTime);


printf("KernelTime:\t\t");
llTempTime  = SystemProcTime.KernelTime.QuadPart;
llTempTime /= 10000;
printf("%d:",llTempTime/(60*60*1000));
llTempTime %= 60*60*1000;
printf("%.2d:",llTempTime/(60*1000));
llTempTime %= 60*1000;
printf("%.2d.",llTempTime/1000);
llTempTime %= 1000;
printf("%.3d\n",llTempTime);


printf("UserTime:\t\t");
llTempTime  = SystemProcTime.UserTime.QuadPart;
llTempTime /= 10000;
printf("%d:",llTempTime/(60*60*1000));
llTempTime %= 60*60*1000;
printf("%.2d:",llTempTime/(60*1000));
llTempTime %= 60*1000;
printf("%.2d.",llTempTime/1000);
llTempTime %= 1000;
printf("%.3d\n",llTempTime);


printf("DpcTime:\t\t");
llTempTime  = SystemProcTime.DpcTime.QuadPart;
llTempTime /= 10000;
printf("%d:",llTempTime/(60*60*1000));
llTempTime %= 60*60*1000;
printf("%.2d:",llTempTime/(60*1000));
llTempTime %= 60*1000;
printf("%.2d.",llTempTime/1000);
llTempTime %= 1000;
printf("%.3d\n",llTempTime);


printf("InterruptTime:\t\t");
llTempTime  = SystemProcTime.InterruptTime.QuadPart;
llTempTime /= 10000;
printf("%d:",llTempTime/(60*60*1000));
llTempTime %= 60*60*1000;
printf("%.2d:",llTempTime/(60*1000));
llTempTime %= 60*1000;
printf("%.2d.",llTempTime/1000);
llTempTime %= 1000;
printf("%.3d\n",llTempTime);


printf("InterruptCount:\t\t%d\n",SystemProcTime.InterruptCount);


}
__finally
{
if(hNtDll != NULL)
{
FreeLibrary(hNtDll);
}
}


return 0;
}


DWORD PagefileInfo()
{
PSYSTEM_PAGEFILE_INFORMATION   pSystemPagefileInfo;
PVOID              pBuffer;
HMODULE            hNtDll = NULL;
DWORD              dwNumberBytes;
DWORD              dwReturnLength;
      NTSTATUS             Status;


__try
{
hNtDll = LoadLibrary("NtDll.dll");
      if(hNtDll == NULL)
{
     printf("LoadLibrary Error: %d\n",GetLastError());
     __leave;
}


NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)
GetProcAddress(hNtDll,"NtQuerySystemInformation");
if(NtQuerySystemInformation == NULL)
{
printf("GetProcAddress for NtQuerySystemInformation
Error: %d\n",GetLastError());
__leave;
}


dwNumberBytes = MAX_INFO_BUF_LEN;
pBuffer = (LPVOID)malloc(dwNumberBytes);
Status  = NtQuerySystemInformation(SYSTEM_PAGE_INFO,
               pBuffer,
dwNumberBytes,
&dwReturnLength);
if(Status != STATUS_SUCCESS)
{
printf("NtQuerySystemInformation for Pagefile
Error: %d\n",GetLastError());
__leave;
}


pSystemPagefileInfo = (PSYSTEM_PAGEFILE_INFORMATION)pBuffer;
do
{
printf("CurrentPagefileSize:\t%d\n",pSystemPagefileInfo->CurrentSize);
printf("TotalPagefileUsed:\t%d\n",pSystemPagefileInfo->TotalUsed);
printf("PeakPagefileUsed:\t%d\n",pSystemPagefileInfo->PeakUsed);
wprintf(L"PagefileFileName:\t%s\n",pSystemPagefileInfo->FileName.Buffer);


pSystemPagefileInfo = (PSYSTEM_PAGEFILE_INFORMATION)((char *)
pBuffer + pSystemPagefileInfo->NetxEntryOffset);
}while(pSystemPagefileInfo->NetxEntryOffset != 0);
}
__finally
{
if(pBuffer != NULL)
{
free(pBuffer);
}
if(hNtDll  != NULL)
{
FreeLibrary(hNtDll);
}
}


return 0;
}


DWORD CacheInfo()
{
SYSTEM_CACHE_INFORMATION     SystemCacheInfo;
HMODULE            hNtDll = NULL;
DWORD              dwNumberBytes;
DWORD              dwReturnLength;
      NTSTATUS             Status;


__try
{
hNtDll = LoadLibrary("NtDll.dll");
      if(hNtDll == NULL)
{
     printf("LoadLibrary Error: %d\n",GetLastError());
      __leave;
}


NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)
GetProcAddress(hNtDll,"NtQuerySystemInformation");
if(NtQuerySystemInformation == NULL)
{
printf("GetProcAddress for NtQuerySystemInformation
Error: %d\n",GetLastError());
__leave;
}


dwNumberBytes = sizeof(SYSTEM_CACHE_INFORMATION);
Status  = NtQuerySystemInformation(SYSTEM_CACHE_INFO,
                 &SystemCacheInfo,
dwNumberBytes,
&dwReturnLength);
if(Status != STATUS_SUCCESS)
{
printf("NtQuerySystemInformation for Cache Error: %d\n",GetLastError());
__leave;
}


printf("CacheWorkingSetSize:\t\t%d(KB)\n",
SystemCacheInfo.SystemCacheWsSize/1024);
printf("CacheWorkingSetPeakSize:\t%d(KB)\n",
SystemCacheInfo.SystemCacheWsPeakSize/1024);
printf("CacheWorkingSetFaults:\t\t%d\n",
SystemCacheInfo.SystemCacheWsFaults);
printf("CacheWorkingSetMinimum:\t\t%d\n",
SystemCacheInfo.SystemCacheWsMinimum);
printf("CacheWorkingSetMaximum:\t\t%d\n",
SystemCacheInfo.SystemCacheWsMaximum);
printf("TransitionSharedPages:\t\t%d\n",
SystemCacheInfo.TransitionSharedPages);
printf("TransitionSharedPagesPeak:\t%d\n",
SystemCacheInfo.TransitionSharedPagesPeak);


}
__finally
{
if(hNtDll != NULL)
{
FreeLibrary(hNtDll);
}
}


return 0;
}


VOID Start()
{
printf("T-PMPerf, by TOo2y\n");
printf("E-mail: TOo2y@safechina.net\n");
printf("HomePage: www.safechina.net\n");
printf("Date: 05-09-2003\n\n");
return ;
}


VOID Usage()
{
printf("Usage:\tT-PMPerf


#endif


Reference:

上一篇:网络敏感程序的编制    下一篇:探测Win2K/XP/2003本机系统信息 上  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-5-23
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿