返回列表 发帖

[原创]监控删除文件的小程序

[这个贴子最后由无条件为你在 2006/04/05 11:46pm 第 1 次编辑]

[watermark]      有时候在网吧上网,如果尝试打开注册表,它会一闪而过,就是明明打开了却立即被关。这是怎么回事呢?其实非常简单,就是网吧的一些管理软件在系统中不停的检测是否有“注册表”窗口存在,如果存在就向它发结束的指令。
      用C++就可以方便的实现。不过今天我不想写禁用注册表的程序,而是写一个更有趣的程序,就是监控你是否有删除文件的事件发生,如果有,就取消你的删除操作!
点击下载EXE文件:


后记:
监控文件操作最好是拦截CreateFile,DeleteFile等系统的API调用,这样就不会有个闪烁的东西出来,让人吓一跳。
专业的拦截程序应该写IFS驱动程序,象防病毒软件那样,从文件系统的中间程进行过滤,这样就可以拦截所有的文件操作。

[原创]监控删除文件的小程序

[这个贴子最后由无条件为你在 2006/04/05 11:58pm 第 1 次编辑] 完整的源代码如下: #include int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpszCmdLine,int nCmdShow) { HWND F; while(1) { F=FindWindow(0,"确认文件删除"); if (F) { SendMessage(F,WM_CLOSE,0,0); //在这里调用锁定计算机的程序,比如密码正确方可删除等。 } Sleep(30); //设置一个后门,例如在运行对话框中输入CALC命令即可停止监控删除文件的操作: if (FindWindow(0,"计算器"))break; } return 0; } 由于前几次都是给出程序核心代码,没有给出完整的程序,有些初学者要求公布完整的程序,这次写的应该够完整了,源码就这么短! 本程序执行后就加载到内存中了。除非你用任务管理器结束它的进程,或者在“开始”菜单中输入“CALC”命令正常退出。 本来这个程序用定时器来写或者更具有专业性,但不用定时器也可以实现,而且我现在的这种写法很容易让初学者看懂。我也没有用枚举系统窗口的方法,还要用到什么回调函数,真是麻烦。我喜欢简单一点的。我写的时候代码短节省时间,你看着也容易接受,不至于让你看见密密麻麻的代码而没有兴趣读下去。。。

TOP

[原创]监控删除文件的小程序

楼主的编程功夫不错。呃,咋看有点面生。。。原来是才来不久的。。
小生有礼了。。
厚着脸皮向楼主讨教,怎么监控固定路径下的文件类型,如果不是指定的文件类型,则删除!

TOP

[原创]监控删除文件的小程序

下面引用由chinanic2006/04/06 00:27am 发表的内容:
楼主的编程功夫不错。呃,咋看有点面生。。。原来是才来不久的。。
小生有礼了。。
厚着脸皮向楼主讨教,怎么监控固定路径下的文件类型,如果不是指定的文件类型,则删除!
      这个问题并不难,就像杀毒软件在杀毒一样,首先对指定目录中的所有文件进行遍历,找到一个文件就判断其扩展名是否合乎要求(本例判断是否是“.txt”),如果找到的不是文件而是子目录,则调用自己继续查找。
      这里给出子函数,在主程序调用它,传递给一个需要判断的路径,也就是你所说的固定路径,就可以了。如果需要监控,用定时器写或者加到循环里面就可以了。正如你所在的版块有人发此贴 http://www.thysea.com/lb/cgi-bin/topic.cgi?forum=18&topic=8914&replynum=last#bottom 求助,完全可以编写一个小程序加载到内存中发现auturun.inf就删除它,虽然可以实现,不过这好像不是良策,建议还是重装系统吧!

void DeleteDirectory(char *DirName)
{
    CFileFind tempFind;
    char tempFileFind[MAX_PATH];
    sprintf(tempFileFind,"%s\\*.*",DirName);
    BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
    while(IsFinded)
    {
        IsFinded=(BOOL)tempFind.FindNextFile();
        if(!tempFind.IsDots())
        {
            char foundFileName[MAX_PATH];
            strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));
            if(tempFind.IsDirectory())//判断是文件还是文件夹?
            {
                char tempDir[MAX_PATH];
                sprintf(tempDir,"%s\\%s",DirName,foundFileName);
                DeleteDirectory(tempDir);//如果是文件夹,则递归调用自己,继续搜索子目录。
            }
            else
            {
                char m,tempFileName[MAX_PATH];
                sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
                strrev(tempFileName);
m=tempFileName[4];
tempFileName[4]=';\0';;
if (stricmp(tempFileName,"txt."))
{
//删除不是txt扩展名的所有文件,如果有子目录删将子目录符合条件的也删除!
tempFileName[4]=m;
strrev(tempFileName);
DeleteFile(tempFileName);
}
            }
        }
    }
    tempFind.Close();
}

在主程序调用:
DeleteDirectory("C:\\123");
    如果你的C盘123目录中存在许多文件,还存在许多子目录,子目录中又存在很多文件甚至还存在子目录,你使用这一句调用,会把“c:\123”中所有.txt为扩展名的文件保留,其余的文件统统删掉!
    最后,说一点,俺是新人,在其它论坛做总版主,来此坛转转,发了几篇不成熟的贴子,不小心被人关注而成了本版版主,此坛人气比较不错,看来我要留下来了,不过我对这里了解不多,还请楼上的版主多多引导!

TOP

[原创]监控删除文件的小程序

哇..楼主好强的撒...
我也想学编程了~~

TOP

[原创]监控删除文件的小程序

      感谢楼上的朋友回复我的贴子!编程有时候很烦糟,特别是有时候有一种编程思想而无法用语言来实现,或者是一个很长的程序总是在编译的时候有错而反复检查却找不到错误所在。
      我不敢说自己擅长编程,因为C++我学的还不足半年。倒是FLASH MX和Photoshop CS,自认为还学得可以。
      听X86版主给我讲,这个论坛“牛”人太多了,让一些高人读到我的“水”贴,实在过意不去,没办法,我是新人,挣点发贴量……

TOP

[原创]监控删除文件的小程序

不错,嘿嘿,思路最重要,尤其是利用那个计算器来结束进程,呵呵:)
如果把进程插入到其他进程中,那样就更隐蔽了,而且可以有效地保护文件不被删除.
但是,如果用api来删除文件不就可以了.
不过总有学到的东西,思路...

TOP

[原创]监控删除文件的小程序

下面引用由无条件为你2006/04/06 07:27am 发表的内容:
      这个问题并不难,就像杀毒软件在杀毒一样,首先对指定目录中的所有文件进行遍历,找到一个文件就判断其扩展名是否合乎要求(本例判断是否是“.txt”),如果找到的不是文件而是子目录,则调用自己继续查找 ...

这样是不是会占用很大的系统资源,如果在服务器上应用,即时检查FTP上传目录的文件类型,以控制用户上传的文件类型。。
也可用于监控WEB目录的文件类型,让不允许的文件类型在该目录消失!
楼主过谦了,小生可以说是不懂编程。。。只是在网上多混了些时候。。哈哈。。即同在一片蓝天下,共同进步之!

TOP

[原创]监控删除文件的小程序

不管你文件有多少,都是几秒就可以搞定的事情,CPU占用不会过高。
所以不会占多少系统资源,但在FTP上好像不管用吧,我这是在本地硬盘上操作的程序。

TOP

[原创]监控删除文件的小程序

下面引用由无条件为你2006/04/06 10:19pm 发表的内容:
不管你文件有多少,都是几秒就可以搞定的事情,CPU占用不会过高。
所以不会占多少系统资源,但在FTP上好像不管用吧,我这是在本地硬盘上操作的程序。
是在本地硬盘上。对别人通过FTP传到本地的文件进行扩展名校验。

TOP

[原创]监控删除文件的小程序

对于楼上的要求,楼主的方法可以,但是效率不怎么高,因为要不停地查询,不过实现起来稍微简单一点.
可以做一个拦截,对ftp服务进程拦截CreateFile,对于不允许的文件类型,就不让他创建文件.或者让他创建了,然后立即删除.
可以用程序实现的.

TOP

[原创]监控删除文件的小程序

多谢楼上的朋友教诲。我C++水平有限,在网上苟活了这么多年。惭愧。
     我这个贴子主旨本来是介绍“监控删除文件的小程序”的实现,没有想到有这么多朋友捧场,谢谢大家。
     请继续发表与主题有关的话题,举一反三,例如你有其它什么好的监控文件建立或改名的程序?如果要讨论“chinanic”所提问题,请重新发表新主题。

TOP

[原创]监控删除文件的小程序

请问楼主
我想用VC编程对我自己的电脑进行网络监控,就是说要监视所有端口,怎么实现限制它的对外连接数?

TOP

[原创]监控删除文件的小程序

我同意默数悲伤的观点,不停地查询要用点cpu的,

TOP

[原创]监控删除文件的小程序

下面引用由huangbi597572006/05/01 09:01pm 发表的内容:
我同意默数悲伤的观点,不停地查询要用点cpu的,
光说没用,您给个高招,小弟试目以待!

TOP

返回列表 回复 发帖