lijianhua12
驱动牛犊
驱动牛犊
  • 注册日期2009-12-04
  • 最后登录2013-03-29
  • 粉丝12
  • 关注9
  • 积分33分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分11分
阅读:29033回复:577

一个修改过的基于ShenHui大牛的透明加解密代码

楼主#
更多 发布于:2010-11-17 14:10
ShenHui 大牛的基于minifilter 的文件透明加解密代码是一套非常优秀的代码,不过对于初学者来说不易掌握,有些初学者在机器上忙了半天都没看到效果,我对代码做了一点小修改,方便初学者掌握

1 手工加载时自动增加system,explorer.exe,notepad.exe为监控进程

2 添加了异或加密算法

3 取消了不对c分区监控的限制,因为很多虚拟机里只有C分区

安装和加载说明

1 把engine.inf,engine.sys拷贝到虚拟机里

2 右击engine.inf,点安装

3 手工加载进cmd, 输入 sc start engine

4 手工停止进cmd,输入 sc stop engine

5 测试时请关闭杀毒软件,代码与诺顿杀毒软件的冲突是由于刷缓存引起的,是能解决的,不过初学者不必关心这个

编译环境  WDK 7600.16835.0

lijianhua12
驱动牛犊
驱动牛犊
  • 注册日期2009-12-04
  • 最后登录2013-03-29
  • 粉丝12
  • 关注9
  • 积分33分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分11分
沙发#
发布于:2010-11-18 20:52
我在 user 目录下放了一个简单的应用层控制代码,可以自己往里面加代码控制驱动
lijianhua12
驱动牛犊
驱动牛犊
  • 注册日期2009-12-04
  • 最后登录2013-03-29
  • 粉丝12
  • 关注9
  • 积分33分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分11分
板凳#
发布于:2010-11-22 12:46
acad不能加密扩展名为.csa的文件,必须放行
lijianhua12
驱动牛犊
驱动牛犊
  • 注册日期2009-12-04
  • 最后登录2013-03-29
  • 粉丝12
  • 关注9
  • 积分33分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分11分
地板#
发布于:2010-11-22 21:12
回 34楼(lijianhua12) 的帖子

 这个我知道,在shenhui大牛的代码里面也有相应的说明,但是当我去打开CAD这个程序的时候,打不开呀?会出现错误(2004),或者打不开进程(2008),你知道是什么原因吗?
=====================
那个代码里没有考虑acad的情况

应该在process.c 的Ps_IsCurrentProcessMonitored 函数最后加上

if ((szProcessName == L"acad.exe") && !_wcsnicmp(pwszExt, L".csa", wcslen(L".csa")))
              return FALSE;
lijianhua12
驱动牛犊
驱动牛犊
  • 注册日期2009-12-04
  • 最后登录2013-03-29
  • 粉丝12
  • 关注9
  • 积分33分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分11分
地下室#
发布于:2010-11-23 18:28
回 37楼(lijianhua12) 的帖子

 你看一下这个图片,这个是我打开acad.exe(2004)的时候出现的,当用acad.exe2008的时候,进程会打不开。
=======================
你把你判断acad.exe的代码贴出来
光一个 psi_addprocess("acad.exe",TRUE);是不行的
lijianhua12
驱动牛犊
驱动牛犊
  • 注册日期2009-12-04
  • 最后登录2013-03-29
  • 粉丝12
  • 关注9
  • 积分33分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分11分
5楼#
发布于:2010-11-23 20:07
 if ((bIsPPTFile != NULL) && !_wcsnicmp(pwszExt, L".ppt", wcslen(L".ppt")))
        {
            *bIsPPTFile = TRUE ;
        }

//   pass  .csa

 if ((szProcessName == L"acad.exe") && !_wcsnicmp(pwszExt, L".csa", wcslen(L".csa")))
{
             bRet = FALSE ;
            __leave ;
}

==============
加在对ppt的判断后面,前面扩展名还没有提取出来
lijianhua12
驱动牛犊
驱动牛犊
  • 注册日期2009-12-04
  • 最后登录2013-03-29
  • 粉丝12
  • 关注9
  • 积分33分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分11分
6楼#
发布于:2010-12-04 11:52
我在学习这个minifilter driver时发现以下问题:
不能对D:下的记事本文件进行加密;可以在C:下对记事本文件加密。研究了两三天了,也不知道是什么原因,望楼主指点迷津。

在此表示感谢

===============================

main.c 里有 这么一句话

#if DBG            
            if ((ctx->Name.Buffer[0] == L'D') || (ctx->Name.Buffer[0] == L'd'))
            {
                FltDeleteContext(ctx) ;
                status = STATUS_FLT_DO_NOT_ATTACH ;
            }
#endif

你把这句话去掉,就对所有盘监控
游客

返回顶部