获取进程信息和计算进程文件的MD5码


本程序在MFC环境下编写的,获取了进程的详细信息,包括进程ID、进程路径、进程的描述、进程占用的内存信息、进程包含的线程数、进程文件的路径和MD5码,以及进程包含的模块的详细信息。
资源截图
代码片段和文件信息
/////////////////////////////////////////////////////////////////////
//md5.cpp
/////
#include “StdAfx.h“
#include “md5.h“
#include 
#include 


const ULONG CMd5::Context[4]={  0x67452301
                                0xefcdab89
                                0x98badcfe
                                0x10325476
};
/*
const ULONG CMd5::Context[4]=  {0X01234567
0X89abcdef
0Xfedcba98
0X76543210
};*/
const LPSTR CMd5::ErrInfo[5][2]={
{““““}
{“The Memory is not enough !““内存分配失败!“}
{“Have not assign a file !““未指定文件!“}
{“Have not assign the text !““未指定文本!“}
{“Have something wrong with MD5!““有错误发生!“}
};
//==========================<内联函数实现>=========================================

ULONG CMd5::LRotate(ULONG Sdataint nBit)
{
return (Sdata<>(32-nBit));
}
ULONG CMd5::F(ULONG xULONG yULONG z)
{
return (x&y)|((~x)&z);
}
ULONG CMd5::G(ULONG xULONG yULONG z)
{
return (x&z)|(y&(~z));
}
ULONG CMd5::H(ULONG xULONG yULONG z)
{
return x^y^z;
}
ULONG CMd5::I(ULONG xULONG yULONG z)
{
return y^(x|(~z));
}
void CMd5::FF(ULONG &aULONG bULONG cULONG dULONG Msgint nBitULONG Cnt)
{
a+=F(bcd)+Msg+(ULONG)Cnt;
a=LRotate(anBit);
a+=b;
}
void CMd5::GG(ULONG &aULONG bULONG cULONG dULONG Msgint nBitULONG Cnt)
{
a+=G(bcd)+Msg+(ULONG)Cnt;
a=LRotate(anBit);
a+=b;
}
void CMd5::HH(ULONG &aULONG bULONG cULONG dULONG Msgint nBitULONG Cnt)
{
a+=H(bcd)+Msg+(ULONG)Cnt;
a=LRotate(anBit);
a+=b;
}
void CMd5::II(ULONG &aULONG bULONG cULONG dULONG Msgint nBitULONG Cnt)
{
a+=I(bcd)+Msg+(ULONG)Cnt;
a=LRotate(anBit);
a+=b;
}
//==========================<成员函数实现>======================================

CMd5::CMd5()
{
 IsSuc=false;
 Pointer=NULL;
 memset(strErr050);
}
CMd5::CMd5(wchar_t *filename)
{
IsSuc=false;
Pointer=NULL;
memset(strErr050);
TargetFile(filename);
}
CMd5::~CMd5()
{
if(Sfile.is_open())Sfile.close();
if(Pointer){delete[]Pointer; Pointer=NULL;}
}
LPCTSTR CMd5::TargetFile(wchar_t *filename)
{
if(!Init())SetErr(1);
static wchar_t temp[MAX_PATH];
wcscpy(tempfname);
wcscpy(fnamefilename);
CaculateFile();
return temp;
}
void CMd5::TargetStr(LPCSTR str)
{
if(!Init())SetErr(1);
CaculateStr(str);
}
bool CMd5::Init()
{
*fname=‘‘;
IsSuc=true;
*Digest=‘‘;
try{
    Pointer=new BYTE[sizeof(ULONG)*16];
}
catch(bad_alloc w)
{   
Pointer=NULL;
        SetErr(1);
}
pM=(ULONG*)Pointer;
FileLen=0;
for(int i=0;i<4;i++)
        T[i]=Context[i];
return true;
}
bool CMd5::OpenFile()
{

Sfile.open(fnameios::in|ios::binary);
if(!Sfile)
{   
SetErr(0);
}
return true;
}
bool CMd5::Read64Byte()
{   static bool rb=true;
int n;
if(!Sfile.eof())
{
Sfile.read((char*)Pointersizeof(ULONG)*16);
FileLen+=n=Sfile.gcount();

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-12-19 09:54  processClient
     目录           0  2011-12-19 09:54  processClientdebug
     文件      159744  2011-11-19 20:05  processClientdebugprocess.exe
     文件     1194732  2011-11-19 20:05  processClientdebugprocess.ilk
     文件     3918848  2011-11-19 20:05  processClientdebugprocess.pdb
     目录           0  2011-12-19 09:54  processClientprocess
     文件    16043008  2011-12-05 19:54  processClientprocess.ncb
     文件         886  2011-11-16 08:53  processClientprocess.sln
     文件       39424  2011-12-05 19:54  processClientprocess.suo
     文件      389120  2011-11-22 10:42  processClientprocessFile.mdb
     目录           0  2011-12-19 09:54  processClientprocessDebug
     文件        8800  2011-09-27 23:52  processClientprocessmd5.cpp
     文件        2274  2011-09-27 23:52  processClientprocessmd5.h
     文件       59624  2011-11-29 17:39  processClientprocessprocess.aps
     文件        1942  2011-11-29 17:08  processClientprocessprocess.cpp
     文件         486  2011-11-22 16:53  processClientprocessprocess.h
     文件        5657  2011-11-29 17:39  processClientprocessprocess.rc
     文件        5589  2011-11-16 09:27  processClientprocessprocess.vcproj
     文件        1427  2011-12-05 19:54  processClientprocessprocess.vcproj.MICROSOF-623AF7.Administrator.user
     文件       22266  2011-12-05 19:30  processClientprocessprocessDlg.cpp
     文件        1613  2011-12-04 18:53  processClientprocessprocessDlg.h
     文件      389120  2011-11-29 19:00  processClientprocessprocessFile.mdb
     文件        2763  2011-11-16 08:53  processClientprocessReadMe.txt
     目录           0  2011-12-19 09:54  processClientprocessRelease
     文件        7470  2011-12-05 19:30  processClientprocessReleaseBuildLog.htm
     文件      568901  2011-11-29 17:17  processClientprocessReleasemd5.obj
     文件      100581  2010-11-09 22:51  processClientprocessReleasemsado15.tlh
     文件       77120  2010-11-09 22:51  processClientprocessReleasemsado15.tli
     文件          67  2011-12-05 19:30  processClientprocessReleasemt.dep
     文件         874  2011-12-05 19:30  processClientprocessReleaseprocess.exe.intermediate.manifest
     文件       21539  2011-12-04 18:54  processClientprocessReleaseprocess.obj
............此处省略16个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)