安全审计机制的设计与实现-20103277-李鑫_第1页
安全审计机制的设计与实现-20103277-李鑫_第2页
安全审计机制的设计与实现-20103277-李鑫_第3页
安全审计机制的设计与实现-20103277-李鑫_第4页
安全审计机制的设计与实现-20103277-李鑫_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上海电力学院计算机系统安全课程设计报告题 目:安全审计机制的设计与实现学生姓名:至鑫学 号: 20103277 班 级: 2010251院 系:计算机科学与技术学院专业年级: 信息安全2010级2013 年 7 月 5 日1、 实验目的安全审计机制的设计与实现要求:设计并实现安全审计机制,需要具备以下功能:(1 )定义系统中需要监视的审计事件;(2 )监视审计事件,生成统一的日志信息;(3 )日志信息保存到一个指定的日志文件中。2、 实验原理安全审计中,syslogd 进程监视系统内的各种信息,并且根据配置文件的信息,将监视到的内容保存到指定文件中。可以在 windows 系统中模拟实现该功能

2、,方法是: 模拟一个syslogd进程,监视指定的一些系统进程信息,并将监视到的内容以格式化的方式保存在文本文件中。监视方法可以每隔指定的时间将全部进程信息列举一次,并加以保存。3、 实验过程1 、需求分析根据题目要求,可以抽象出一些概念,要实现系统安全审计机制,则要实现三个功能,第一,定义要监视的事件,例如进程的创建事件,运行事件,及其相关内容。第二,生成统一的日志信息,也即有大量的格式基本相同的事件。第三,将产生的事件日志保存在指定的日志文件中。根据对题目的分析,可以获知需要知道的基本知识有获取进程相关信息的知识、格式化输出的函数、文件操作函数等。系统环境:Windows 系统开发工具:V

3、isual C+ 6.0所用语言: Windows API2、安全机制设计,实施设计: 主程序流程模块-可编辑修改-主进程1、监视指定 的进程(每2 秒监视一次)2、获取全部 进程信息(每 10秒列举一 次)3、监视当前 会话窗口(每 1秒监视一 次)保存监视文件保存监视文件保存监视文件实施: 定义结构体struct ProcessinfoDWORD m_th32ProcessID;DWORD m_cntThreads;DWORD m_th32ParentProcessID;LONG m_pcPriClassBase;DWORD m_dwPriorityClass;SYSTEMTIME m_C

4、reationTime;SYSTEMTIME m_ExitTime;TCHAR m_szExeFileMAX_PATH;mProcessInfo500,pProcessInfo200;用于保存进程的有关信息。定义监视函数BOOL GetProcess(char *ch) , 监视指定的进程是否在运行,ch 为传入的进程名如: QQ.exe 、 explorer.exe 等。要知道指定的进程是否在运行,可以根据进程名来判断,将当前进程名与系统中与运行的进程名一一对比,找到则认为有,否则没有。所以必须列举当前所有进程,故要获取进程快照,并且将进程罗列一遍。hProcessSnap = Create

5、Toolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);用于创建当前进程快照,BOOL bProcess=Process32First(hProcessSnap, &pe32);开始罗列第一个进程,bProcess=Process32Next(hProcessSnap, &pe32);罗列下一个进程,strncmp(pe32.szExeFile,ch,sizeof(pe32.szExeFile)=0可对比两个字符串是否相同,若要获取进程优先级,则必须打开进程,可使用hProcess = OpenProcess( PROCESS_ALL_ACCESS,

6、 FALSE, pe32.th32ProcessID );dwPriorityClass = GetPriorityClass( hProcess );可获取进程优先级,bRet=GetProcessTimes(hProcess,&CreationTime,&ExitTime,&KernelTime,&UserTime);可获取进程创建时间,退出时间,内核时间,用户时间,FileTimeToSystemTime(&CreationTime,&sCreationTime);可将文件时间转换为系统时间,系统时间与本地时间相差8 小时,还得转换TIME

7、_ZONE_INFORMATION tz;GetTimeZoneInformation(&tz);SystemTimeToTzSpecificLocalTime(&tz,&sCreationTime,&localSTCreationTime);可实现将系统时间转换为本机本地,即我们平时使用的时间。ch 为定义枚举函数VOID WINAPI EnumProcess2(char *ch) ,枚举系统中当前存在的进程,文件保存路径,如:D:syslog_all.txt 。若要枚举函数,也要创建进程快照,并且一一列举所有进程,仍然使用以下函数hProcessSnap =

8、 CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );Process32First( hProcessSnap, &pe32 )Process32Next( hProcessSnap, &pe32 )*ch) ,监视当前活动在最顶层定义监视当前会话窗口的函数VOID GetTopWindowInfo(char的 窗 口 的 类 名 ( classname ) 和 窗 口 描 述 ( TextString ) , ch 为 文 件 保 存 路 径 , 如 :D:syslog_all.txt 。监视系统的活动窗口,可以先获取活动窗口的

9、句柄,hwnd=GetForegroundWindow();可用于获取活动窗口的句柄,无参数,返回顶层窗口句柄,GetClassName(hwnd,ClassName,1024);GetWindowText(hwnd,T extString,1024);可用于获取窗口类名和窗口文本描述,这些信息保存在字符串ClassName 、 TextString 中, 对我们列举信息有用。定义日志保存函数void SaveLog(char *ch,ProcessInfo mProcessInfo,int i),将结构体中的信息以固定格式保存到指定的日志文件中,ch 为文件保存的完整路径,mProcessI

10、nfo 为事先定义的结构体,用于保存进程的相关信息,i 为当前结构体的下标索引。FILE *file;file=fopen(ch,"a");可以定义并打开文件,ch 为为文件完整路径,a 为打开方式,没有则创建,有则追加到文件尾部。Fprintf ,用于格式化字符到文件中。fclose(file); ,用于在文件使用完毕之后关闭文件。-可编辑修改-定义 VOID Threadfunc(void *func,char *ch),用于创建线程,func为线程函数指针,ch为-可编辑修改-线程函数参数,也就是进程名或是文件保存路径。HANDLE hThread;DWORD dwT

11、hreadId;hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)func,ch,0,&dwThreadId);用于创建线程,func为线程函数,ch为线程函数的参数,函数调用后返回线程句柄。CloseHandle(hThread);用于创建完成后关闭线程句柄。定义VOID Menu()函数,用于打印一些用户信息。四、实验演示 £ 1S£iphei"j3rcxJ,X£3ebLjgp' mj. tjuc"H日芭交畔胃存内:H:M>V 1O'|- t 二爷类 WWW

12、 - 置,*怩玉片十片* wwwmfWNi*量,*/*/,*/1!/*wnn* *修4立修. 11 . n -函 II f II .0 VF一M 九卡 丁-土 至里 * *« *甘1空峰. *.童 . ,能!»TZ"”"nnr日志交件再存:*"»; M 师lUf .t无关型c ,舸-W咽M *收pX* *第kkk 舸彳*/降品丁一%,际用f mwff电_zi花指宝日, 进f3仁且21社E=也一七门_ f-HHMfmt - ”m ) ,通率 SfiifJ.cSiirP和库一那,舸奇泞巧;i|片话事口 c后炉儒栩一指i,*1*刊 - $退

13、出象蛇修¥花+9窿小周|七一 'W"wkr"片!ri tf *'MH ,9 *tVWwtr餐8Wkr*-U if y "WMhf - VW - * if 社ir 胃WtfWW ii . w M-WU Mto-v W a WWW 2恤* 7 -1 tfWWffl WWWWh WWWWWA3 A”工理引这小明.讣F里号好战过用丁 一甯第普襄由金昌功"日志文件保存为Xu*qinff" J» "遇事.txt747卓*N*1 r,M9H» &*TDO0iNL0AIT«blAc3li

14、fflr_!c5>D*biJg.rDi2.B>fiB,工曾累 增 HmM-次加 戌r, 非守 争< E 由息口随-H 眄 44 MMMM MM NMX M 5AM* = WHMM一后 MM 4 彳=H忐士祥性左步口:匕gkfj-all-txtEkWQJJO13-7-4 2254Jprocess :2013-7-4 2土乂乜"国值批国 州1A7T的4楣】wII >013-7-4 22:24:43process ,20137-1 222 24:43Jpir«es = ?013-7-4 ?:?4 :431prwp5fi :2013-7-i 52;243pr

15、oc«5 ,州 13-Z 22:24:43p£«Mi 碑kT 2;Z4;431procw ,2013-7-4 2Z24.43 prsE” 3013-7-1 SS:34:4I3ft«i«i 20 3-7-4 224:431procCTS '2013-7-4 5124143.process :2013-7-4 52:24:43proc««B ,2013-7-4 22:24:431 process ;01±-fT U2. 24 2 43. pJrcce s sno nr SvsTrap JTW?* 瞽 i.jCk

16、thaTQ 函 copnrt : 0b pQrvRlClfsBiiSf'A vPtiGTHTClusiiOi fTMt Jdeuh ;twt process Ld.: thfetdii &oufit"-4F perenT proca> id :认出"鼠曲也斯 加氏1就f tyCla43:。11alopt ion tiM: L snan: ahi. procen Id: threadsaMceu 14"4bCls?: 11»,dwPr 1 &r11rClai 1-0,re*1icm,回更履34”* exe,即scemw <

17、;1:552. LUreada couell: 552 parni 陛比/ms i口; 5rD41tlMm|4已;11 轲¥工0<6其1 "mR, er至底1 aJbe .v mi e 21. =xe. pre zs £d:6A0r ihte&dl eMJttlU0, pafrst pTMcs 1 dI-BOl, C Issla&e 1.3., df'r. or 11 yCIfiAS!en ham r门工 rxe, jKFocevi idZM&Jhrav :4iBS.purpfit procevv id:to?.13,1891

18、?"IXMoriljCius:Q!rnvt nfin; scrvLces, cxed process id;724. thrcwLs coimt; f S4B parent proce&s id;60ObCl&BBa«c-;9i dwPri(?ritL"tleiss;flLcn mm: Ihh. de% 林帆卡"工d ;贯Jhi2d由 Mint::触.婵mtn a由 ld:80P Ch 'PrioriTyClAjmO, cftl 网唯;1科 4品 01rge2 id 打MjiueM 争 cme:丁咐网锚工 pr&ceas

19、la; 66Q. ci a s&ast - s. ewfti aril rcias Q. credit 1m nan 二 svEliojt. exen process i d.: E-43r : bmads 匚叫nt 1S45, pamt process id 二 724, C IssSaae! & dirlarityC Lassi Dr crea rne.QqpCItTP. Tx.f.pr&tetfi id:99S. ihreadi wuni:K&i pireat prctfs 1比设工门酬配上总值d*FrgrityC:”:”更量 wmrlirlnliGkfm

20、 ew. pro-rss id" 1024t thmds CMnmQM parent proe4ss id:fl££11clMsQnC1:MYicnilfCHHgheuk; svehgt,噂K6mrchtcs 14:1-072. TJlrfrMLa couant : 10>"B parent prenex:.:,二:/二3出03:丸1411匕式 1&&台擅盟也%prs“* ld'13J3P thrttdi -tont 1132rp*rent woch* ld:7S-aPCh4eti'i:6.dHrPrKtriTyCl

21、MtTO,«ee. process 119B. threads eoiwt ; 11W. par rat migcesa idzT241I EfisBaaezS,. dsPrldilLTClaia :0, craJbe i hwliMt. rx.e. pt : c z . d:;232" thrudg eoiifit! 12-32, puFM&t. pmoMS idiTS'C, ClsaSiaiSezQ;, dMPrTltjCljua-iQi orH14= 0 LPl ptk TDCZrNLOAf.4 1T«TA£itiphsr*sprr

22、-z2'L-bugi.zracJ.eii-1,Xs 5 laqr_u 1 ndc u _1 xt也。P手 ,;j金卮功 < 日志文件取存为IN f X W】3-nf j H4»raw#«WK4MF)f年,片惮修修片 hM4HIM帆旭 ”三条单父型日卜0* ¥整看,片帧 片修 w"修彳口,, M /” ”日茬文件保存为:BsMyt 1gtxt等搅型5役e w 户“mi'n. .twt"i «a>=旧:口 i « L'l EhC2O13-7-4 M 3-7-4 E2O13-7-1 L2

23、4;lfl-7-4 >;:i<-L L2Q13-7-4 ms i r.2O13-J-4 L2 时 37T 2013-7-Jl 2G19TT L:OI 3-7-13-7-4tWH-7-4 C2P13-7-4 J如 3-:7 押 1J-TT Bm3-7-4 2W3-JS L2M3-7-4 2013-7-4 曲ME L2P13-7-1 20fl3-7'4l E2O13-7-4 C2W3-J-4 2(« 3-7-422-2&- 37JCliiENaie工hr甘蜜 肥南酊, lo_lF 鳖 2fl> 的£】* 曲Id Chr*« Ildf#

24、EVin 1, 22 7e沿;口HTL Him图二充血打有nZ】。 £电:弱二城 C14NaBff:Ch±«K/t<|gni4rLL 累, 41:03 谆1: detain L 22 26毂<1S£羯0白七吐0呢二电白BltCl. 勰:册 4aClMBHw:Chiw_* :4te r Mrul. 22_2fi.- 14dC as sNaie. hutise -Ildietlin 1. 骷:寓&0alMthnmJTi峥LllcLk ” ?r im林励大飞1”匕i“T.n : 122.上3.4;.工1 us aue- .Chicmejri

25、 dee-tf iq_lB 22 'ISAl(L:-lMfl4:ChX4M _肮4P 察叫忆1 22 20. X9IC as.eX-ant:Chr-3me-_li-±s-s111 n_ 1, 饕,。为百以入了儡iiF7m也"排.J2 尤-Ed 一门 fl,三的5。-二金文堂心鼓.£ laji sNau- TXEulPwiidht 1 血 - -r 订-hi -'< if -';r. :F .1 M : 11. £?: 26; JClwJteezIGHlFcndtftlaii). 北.2&.i6t j 心隔9e二 TX

26、LMFrk 电SiSiL 结 酝 cimYawzTOiFmuideT g / l! J i' J il -' XL il J Jl:li? . IL£九2配出:1】工,s-: TXCaiF刖$t i«L 二2 "二B- Dfl.Cl.Eaie: TXJClF>d!idat l::n. 2f 27 中r:H&Xur: TXOu Found>i Le. E2: S7: 1 ClassaK! TTQHFoundWl if 二 .' _ 11 .):Ju:, . «ii. Li.- .-:ir.227.5匚触 53t

27、; ng 次24型 Ed:#s-Stringrhacl2S上啊4逵三开始一二为五全:河'选哥I”喈tn用.百!(下. frftlrit -,的安全同更导-rxiStrina百号一下。1-K"布-西左层吕 T«x:otr'nj:0 4- 3它社虻dt -宜的氯至淘足事:*:制口制&五才一下.停前船塔-«7- _Li Hl 下.它鼓归道"监rtstTinc:rr一下,悔沌纪聋 sn*3黑辛餐 TertStriwiSF® -第摊聿脚算班E加速探=者粒哓士/克.Tfxjtrin( TtC -附非宾至褥戈券二"Wtfn也

28、白注一卜.1:"品匚J? -胃Q安辛再蹙0 T«nstnmzfff-Ti frftfcl - fleifilfS 二ETtL破 天母亘-猎的来全世龙卷TniStM":的神匕 T<TtStrturQQJ012 Me怎I与:李正要 TmStrZ 呻 M2 7ert$trilLE ;本正jl Ttsi jtri";明IDH T"T写tfI:/:如?1之 leilfilr Ln.g:全见高-*值 TratEtFiai:中茂高酒硬 丁在t5trm引叁HJE *头值 Text如 U:QQM工Text5tr ine :至配高事头睦14IStrL口:台於

29、高濯*0T«tStrinjQQ2tl2XI rem-_ Ladetldc pj. bmp24)U/liJ16 13Kankj.- 13田 学拿且PS!) <B五、实验总结通过本次的课程设计,才真正对编程有了更深的了解。像系统api 的调用,平时有看,但是只是知道,不懂如何用,到真的使用的时候,发现根本不会使用,而且有时候要实现一个功能,却又会找不到使用哪个函数。系统api 的调用最大的困难就是不了解要实现指定的功能要使用的是哪个函数。这必须得平时学习积累,在设计过程中首先想到的就是列举所有的进程。由于以前就见过该功能的实现,所以在网上可以找到相关api 的介绍,并且编程实现该功

30、能。这些列举进程的函数的实现方式基本都是固定的,微软已经有了相关的示例介绍这些列举方法。其次,又想到了将指定进程列举出来监视,这时还是使用将全部进程列举出来和指定进程加以对比,看是否相等来实现。由于列举进程要列举相关的进程信息,所以定义了一个结构体来存放进程相关信息。由于涉及到了将信息保存到文件中,所以每当有一个结构体被填充,就将该成员保存到记事本中。最后,以每秒监视一次的方式,列举了活动的顶层窗口,并且取得了窗口类名和窗口描述。获得的相关信息保存到了指定的文件中。本来想的是实现监视系统内的所有进程,每当有一个新的进程启动时就记录它,并表明启动,每当有进程退出时也记录它,并表明退出。但是在反复

31、思考过后发现一个进程的启动时间是随机的,如果用一般的进程去监视系统内何时有进程启动是不行的。首先,必须保存当前已经启动的所有进程信息,如果保存到数组中,那么隔一定时间将系统所有进程列举一次,并将列举到的所有进程与数组中的对比。如果当前系统进程不与数组中的所有进程相同,则认为它是新的进程,可将它添加到数组中。但是问题又出现了,如果当前系统进程退出了,数组中的内容无法得到及时更新,无法监视到进程的退出,所以必须将数组的每一个进程与系统所有进程加以对比,如果一个进程与系统所有进程都不同,则认为该进程已经退出,清除该结构体中的数据。经过一般思路分析,要想监视进程启动退出,必须指定一定时间监视所有进程一

32、次,其次,必须将系统进程与保存的所有进程对比,以确定是否有新进程启动;必须将保存的进程与系统所有进程对比,以确定是否有进程退出,也就是要进行两次有方向的对比,一次是系统进程到保存进程的对比,另一次是保存进程与系统进程的对比,情况比较复杂。而且,这是不考虑系统中有相同进程名的进程,事实上,系统中可以有多个QQ.exe 进程或是其他进程,这样情况就更加复杂了。由于时间有限,所以很多功能和问题都是想到了,感觉很棘手,不好解决。六、 实验缺点及问题缺点:本程序比较死板,如果监视指定的进程,则只能每隔指定的时间将进程的相关信息列举一次,保存到文件中,这样会产生大量文件信息。其次,不能监视到进程的相关线程

33、的更多信息,也不能监视进程的退出时间,只有进程启动了才能将相关信息写入文件中,进程退出后, 也不能监视到它的详细退出时间。也无法监视到进程干了些什么事情,比如 iexplore.exe( 浏览器进程)访问了那些网站,完全监视不到,只能记录进程的有关规定信息。本来是守护进程,也就是不可能被结束的进程,本来想做成像360 进程那样,在任务管理器里无法结束的形式,但是经过考虑后发现挑战性太大了,该功能无法在短时间内实现。如要实现该功能,会涉及到进程Hook 技术,需要编写.dll 文件,这种技术比较高深,而且也没怎么接触过。其次,该功能会涉及到系统内部调用,有可能涉及到了内核相关知识,所以只是想到了

34、而没有实现。还有一种做成守护进程的方式,就是将它做成服务的形式,使它在系统后台运行,实现开机启动,但是服务也不是就结束不了,只要停止它,它就不起作用了。本程序启动了三条线程,而且最多也只有三条线程,无法实现更多线程的启动。一个功能一个线程,三个功能可以有三个线程。本程序存在的问题:本程序经过了多次修改和测试,最终实现了相关的功能,算是一个有些功能的小程序了,但是与真正的进程监视程序相比还是差得很远。当然程序也是有一些无法解决的错误的,基本上如果按照程序指定的要求输入是不会产生错误的,如果胡乱输入,就会错误。其次,程序运行时间久了,例如10 分钟,则偶尔可能会出现异常终止的现象。-可编辑修改-如

35、果点击调试,会显示七、程序源码#include <windows.h>#include <tlhelp32.h>#include <Psapi.h>#include <stdio.h>#include <iostream.h>#include <string.h>int n=0,q=0;struct Processinfo DWORD m_th32ProcessID;DWORD m_cntThreads;DWORD m_th32ParentProcessID;LONG m_pcPriClassBase;DWORD m_dw

36、PriorityClass;SYSTEMTIME m_CreationTime;SYSTEMTIME m_ExitTime;TCHAR m_szExeFileMAX_PATH;mProcessInfo500,pProcessInfo200;void SaveLog(char *ch,ProcessInfo mProcessInfo,int i);initVOID WINAPI EnumProcess2(char *ch) HANDLE hProcessSnap;HANDLE hProcess;PROCESSENTRY32 pe32;DWORD dwPriorityClass;BOOL bRet

37、;FILETIME CreationTime,ExitTime,KernelTime,UserTime;SYSTEMTIME sCreationTime,sExitTime,sKernelTime,sUserTime;SYSTEMTIME localSTCreationTime,localSTExitTime,localSTKernelTime,localSTUserTime;memset(&sCreationTime,0x0,sizeof(sCreationTime);memset(&sExitTime,0x0,sizeof(sExitTime);memset(&sK

38、ernelTime,0x0,sizeof(sKernelTime);memset(&sUserTime,0x0,sizeof(sUserTime);memset(&localSTCreationTime,0x0,sizeof(localSTCreationTime);memset(&localSTExitTime,0x0,sizeof(localSTExitTime);memset(&localSTKernelTime,0x0,sizeof(localSTKernelTime);memset(&localSTUserTime,0x0,sizeof(loc

39、alSTUserTime);L2:hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );if( hProcessSnap = INVALID_HANDLE_VALUE ) printf( "CreateToolhelp32Snapshot (of processes)" ); return ; / 设置输入参数,结构的大小 pe32.dwSize = sizeof( PROCESSENTRY32 );/ 开始列举进程if( !Process32First( hProcessSnap, &pe

40、32 ) ) printf( "Process32First Error" ); CloseHandle( hProcessSnap ); return ; do/printf( "nPROCESS NAME:%s", pe32.szExeFile );dwPriorityClass = 0;hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );if( hProcess = NULL ) ;/printf( "tOpenProcess Error"

41、; );else dwPriorityClass = GetPriorityClass( hProcess );/获取优先级if( !dwPriorityClass );/printf( "GetPriorityClass" );bRet=GetProcessTimes(hProcess,&CreationTime,&ExitTime,&KernelTime,&UserTime);FileTimeToSystemTime(&CreationTime,&sCreationTime);FileTimeToSystemTime(&a

42、mp;ExitTime,&sExitTime);FileTimeToSystemTime(&KernelTime,&sKernelTime);FileTimeToSystemTime(&UserTime,&sUserTime);TIME_ZONE_INFORMATION tz;GetTimeZoneInformation(&tz);时间转换为SystemTimeToTzSpecificLocalTime(&tz,&sCreationTime,&localSTCreationTime);/UTC 当地时间SystemTime

43、ToTzSpecificLocalTime(&tz,&sExitTime,&localSTExitTime);CloseHandle( hProcess ); / 打印进程相关信息/printf( "nprocess ID= 0x%08X,", pe32.th32ProcessID );/printf("thread count= %d,", tThreads );/printf( "parent process ID= 0x%08X,", pe32.th32ParentProcessID );/printf(

44、"Priority Base= %d,", pe32.pcPriClassBase );/if( dwPriorityClass )/printf( "Priority Class= %d,", dwPriorityClass );/else/printf( "Priority Class= Error,");/printf("CreationTime= %d-%d-%d %d:%d:%d,",/localSTCreationTime.wYear,localSTCreationTime.wMonth,localST

45、CreationTime.wDay,/localSTCreationTime.wHour,localSTCreationTime.wMinute,localSTCreationTime.wSecond );/printf("ExitTime= %d-%d-%d %d:%d:%d,",/localSTExitTime.wYear,localSTExitTime.wMonth,localSTExitTime.wDay,/localSTExitTime.wHour,localSTExitTime.wMinute,localSTExitTime.wSecond );mProcess

46、Infon.m_th32ProcessID=pe32.th32ProcessID;mProcessInfon.m_cntThreads=pe32.th32ProcessID;mProcessInfon.m_th32ParentProcessID=pe32.th32ParentProcessID;mProcessInfon.m_pcPriClassBase=pe32.pcPriClassBase;mProcessInfon.m_dwPriorityClass=dwPriorityClass;mProcessInfon.m_CreationTime=localSTCreationTime;mPro

47、cessInfon.m_ExitTime=localSTExitTime;strcpy(mProcessInfon.m_szExeFile,pe32.szExeFile);SaveLog(ch,mProcessInfo,n);n+;if(n>=300) n =0; while( Process32Next( hProcessSnap, &pe32 ) );CloseHandle( hProcessSnap );Sleep(10000);goto L2;/ 监视指定进程是否启动BOOL GetProcess(char *ch)HANDLEhProcessSnap = NULL;TC

48、HARszPriority32 = 0;TCHARszFileNameMAX_PATH = 0;PROCESSENTRY32 pe32= 0;HANDLE hProcess;DWORD dwPriorityClass;BOOL bRet;FILETIME CreationTime,ExitTime,KernelTime,UserTime;SYSTEMTIME sCreationTime,sExitTime,sKernelTime,sUserTime;SYSTEMTIME localSTCreationTime,localSTExitTime,localSTKernelTime,localSTU

49、serTime;memset(&sCreationTime,0x0,sizeof(sCreationTime);memset(&sExitTime,0x0,sizeof(sExitTime);memset(&sKernelTime,0x0,sizeof(sKernelTime);memset(&sUserTime,0x0,sizeof(sUserTime);memset(&localSTCreationTime,0x0,sizeof(localSTCreationTime);memset(&localSTExitTime,0x0,sizeof(l

50、ocalSTExitTime);memset(&localSTKernelTime,0x0,sizeof(localSTKernelTime);memset(&localSTUserTime,0x0,sizeof(localSTUserTime);/Take a snapshot of all processes in the system.L1:hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProcessSnap = INVALID_HANDLE_VALUE)return (FALSE)

51、;pe32.dwSize = sizeof(PROCESSENTRY32);BOOL bProcess=Process32First(hProcessSnap, &pe32);while(bProcess)if (strncmp(pe32.szExeFile,ch,sizeof(pe32.szExeFile)=0)dwPriorityClass = 0;hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );if( hProcess = NULL );/printf( "nOpenProc

52、ess Error" );elsedwPriorityClass = GetPriorityClass( hProcess ); if( !dwPriorityClass );printf( "GetPriorityClass" );bRet=GetProcessTimes(hProcess,&CreationTime,&ExitTime,&KernelTime,&UserTime);FileTimeToSystemTime(&CreationTime,&sCreationTime);FileTimeToSystem

53、Time(&ExitTime,&sExitTime);FileTimeToSystemTime(&KernelTime,&sKernelTime);FileTimeToSystemTime(&UserTime,&sUserTime);TIME_ZONE_INFORMATION tz;GetTimeZoneInformation(&tz);SystemTimeToTzSpecificLocalTime(&tz,&sCreationTime,&localSTCreationTime);/UTC时间转-可编辑修改-换为当

54、地时间SystemTimeToTzSpecificLocalTime(&tz,&sExitTime,&localSTExitTime);CloseHandle( hProcess );pProcessInfoq.m_th32ProcessID=pe32.th32ProcessID;pProcessInfoq.m_cntThreads=pe32.th32ProcessID;pProcessInfoq.m_th32ParentProcessID=pe32.th32ParentProcessID;pProcessInfoq.m_pcPriClassBase=pe32.pcPr

55、iClassBase;pProcessInfoq.m_dwPriorityClass=dwPriorityClass;pProcessInfoq.m_CreationTime=localSTCreationTime;pProcessInfoq.m_ExitTime=localSTExitTime;strcpy(pProcessInfoq.m_szExeFile,pe32.szExeFile);char dir100;wsprintf(dir,"D:syslog_single_%s.txt",ch);SaveLog(dir,pProcessInfo,q);q+;if (q&g

56、t;=100)q=0;bProcess=Process32Next(hProcessSnap, &pe32);CloseHandle (hProcessSnap);Sleep(2000);goto L1;return 0;VOID GetTopWindowInfo(char *ch)HWND hwnd;char ClassName1024;char TextString1024;FILE *file=NULL;SYSTEMTIME st;L3:GetLocalTime(&st);hwnd=GetForegroundWindow();GetClassName(hwnd,Class

57、Name,1024);GetWindowText(hwnd,TextString,1024);file=fopen(ch,"a");if (file=NULL)cout<<" 打开文件失败!"<<endl;fprintf(file,"%d-%d-%d %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);fprintf(file,"ClassName:%s,tTextString:%sn",ClassName

58、,TextString);fclose(file);Sleep(1000);goto L3;void SaveLog(char *ch,ProcessInfo mProcessInfo,int i)SYSTEMTIME st;GetLocalTime(&st);FILE *file=NULL;file=fopen(ch,"a");if (file=NULL) cout<<" 打开文件失败!"<<endl;fprintf(file,"%d-%d-%d %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);processfprintf(file,"processname:%s,processid:%d,threadscount:%d,parentid:%d,ClssBase:%ld,dwPriorityClass:%d,creation time:%d-%d-%d %d:%d:%dn", mProcessInfoi.m_szExeFile,mProcessInfoi.m_th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论