shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
阅读:37535回复:134

【分享】minifilter透明加解密源码

楼主#
更多 发布于:2010-01-25 11:28
 现在很多做透明加解密的初学者都比较困惑,不知从何下手,我也是如此,从什么都不会开始,慢慢肯文件系统内幕,到OSR上面请教,四个月的时间还是收获颇丰。其实真正研究以后会发现,很多都是体力活,要不断的去跟踪文件的操作流程。在这里发一个基于minifilter的透明加解密的驱动源码仅供大家参考,其中也实现了对文件标识的处理,文件标识放在文件尾部。算是抛砖引玉吧。坦白的说,这个代码并不稳定(偶尔与norton杀毒软件会有冲突),但是我觉得整个流程是正确的,可能有些细节还没有考虑清楚,我觉得对初学者还是有一定帮助吧,当然大虾们可以跳过,呵呵。另外,有关加解密算法的代码由于不是我写的,也不好公开,所以我把相关代码用“\\\”给注释掉了(但没有去掉),请大家见谅,不过不会对整个流程产生影响。大家可以重点看一下各个派遣函数的实现。
    欢迎大家拍砖,觉得有点意思就顶一下啊,在看代码的过程中如果有什么好的建议,也希望能告诉我。
    最后非常感谢XiangXiangRen,zzbwang,neak47等网友在这段时间内对我的帮助。XiangXiangRen的书以及zzbwang的帖子对我完成这项工作有很大的帮助和参考价值,在此谨与大家分享。
 
编译环境:WDK6001.18002 XP x86
 
PS: 您可以将附件中的代码进行修改和转发,但转发时请注明出处。
 

 
把附件重新放上来了。encryption_on_the_fly.zip
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2010-01-25 17:27
多谢兄弟!
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
板凳#
发布于:2010-02-04 12:22
回 6楼(taiji78) 的帖子
上层有些不是我做的,所以也不好给大家。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2010-03-30 16:28
回 19楼(liuhui19842003) 的帖子
这估计不是代码问题,呵呵。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
地下室#
发布于:2010-04-18 19:30
能否把你的代码发一份给我,我来实验一下。看代码好像没有问题。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
5楼#
发布于:2010-04-21 22:59
回 27楼(yiyi507) 的帖子
office也是可以的。请问你实验的记事本在FAT上有什么问题呢?能否把修改的地方告诉大家,谢谢!
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
6楼#
发布于:2010-04-22 16:26
回 32楼(yiyi507) 的帖子
有可能和你昨天修改的有关系,这个代码在windows XP Professional sp3上已经测试通过了,包括NTFS和FAT32。
另外你可以暂时先不关注在explorer中看到的文件长度。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
7楼#
发布于:2010-04-22 16:43
大概说一下测试方法。

1. 加载驱动
  FilterLoad(...)
2. 建立与驱动通信的通道
    FilterConnectCommunicationPort(...)
3. 设置system进程和explorer.exe进程
    MSG_SEND_ADD_PROCESS_INFO sSendAddProcInfo ;
    memset(&sSendAddProcInfo, 0, sizeof(sSendAddProcInfo)) ;
    sSendAddProcInfo.sSendType.uSendType = IOCTL_ADD_PROCESS_INFO ;
    sSendAddProcInfo.sProcInfo.bMonitor = TRUE;
    strncpy(sSendAddProcInfo.sProcInfo.szProcessName, "system", strlen("system")) ;
    MSG_GET_ADD_PROCESS_INFO sGetAddProcInfo ;
    memset(&sGetAddProcInfo, 0, sizeof(MSG_GET_ADD_PROCESS_INFO)) ;
    hRes = FilterSendMessage(hPort, &sSendAddProcInfo, sizeof(MSG_SEND_ADD_PROCESS_INFO), &sGetAddProcInfo, sizeof(MSG_GET_ADD_PROCESS_INFO), &dwReturned) ;

    MSG_SEND_ADD_PROCESS_INFO sSendAddProcInfo ;
    memset(&sSendAddProcInfo, 0, sizeof(sSendAddProcInfo)) ;
    sSendAddProcInfo.sSendType.uSendType = IOCTL_ADD_PROCESS_INFO ;
    sSendAddProcInfo.sProcInfo.bMonitor = TRUE;
    strncpy(sSendAddProcInfo.sProcInfo.szProcessName, "explorer.exe", strlen("explorer.exe")) ;
    MSG_GET_ADD_PROCESS_INFO sGetAddProcInfo ;
    memset(&sGetAddProcInfo, 0, sizeof(MSG_GET_ADD_PROCESS_INFO)) ;
    hRes = FilterSendMessage(hPort, &sSendAddProcInfo, sizeof(MSG_SEND_ADD_PROCESS_INFO), &sGetAddProcInfo, sizeof(MSG_GET_ADD_PROCESS_INFO), &dwReturned) ;

4. 设置你要监控的进程(notepad.exe/winword.exe/excel.exe/powerpnt.exe)
  方法同3。

通过这四部,就可以进行测试了。

当然结束测试前别忘了关闭与驱动通信的端口,以及调用FilterUnload将驱动卸载。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
8楼#
发布于:2010-04-22 22:24
回 36楼(yiyi507) 的帖子
这个代码并没有特别区分临时文件还是普通文件,一律平等对待。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
9楼#
发布于:2010-05-10 22:28
回 44楼(bilaopao) 的帖子
呵呵,这个函数所有权不在我,所以不能公开,见谅。
如果是测试使用,建议你可以用一个简单的异或算法进行加解密即可。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
10楼#
发布于:2010-05-11 12:51
回 47楼(crazy4stef) 的帖子
这里因为是对文件的读写,所以先得到文件系统的设备对象,然后发请求给对应的文件系统。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
11楼#
发布于:2010-05-11 12:57
回 48楼(ander5115) 的帖子
你可以到OSR上找一下Obtaining A Useful Name for the Executable Image in a Process这篇文章,应该会有很大帮助。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
12楼#
发布于:2010-05-11 12:59
或者直接google也可以找到:)
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
13楼#
发布于:2010-05-11 23:27
回 54楼(crazy4stef) 的帖子
1. 对于ppt来说,点save按钮进行保存和点close进行保存效果是不一样的。点save只会将修改的一部分数据写入磁盘,点close保存则是将整个文件重新写到磁盘一遍。
2. postset更新文件名只是习惯。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
14楼#
发布于:2010-05-11 23:28
回 55楼(bilaopao) 的帖子
有可能,我也偶尔遇到过这个问题。你的机器上有没有装杀软?
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
15楼#
发布于:2010-05-18 18:03
回 65楼(xxagri) 的帖子
你实验的是txt文档么?
我今天实验了一下,txt文档确实有这个问题。
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
16楼#
发布于:2010-08-06 12:52
1. 这个程序 编译安装能不能用的?
>>能运行

2. 直接用这个程序,是不是加密解密没有作用?
>>不能,代码中没有加密算法

3. 这个加密解密是不是在驱动里面做的?需不需要自己修改程序做进程监控,比如记事本进程,word进程等等.
>>是在驱动中做的,但需要自己添加监控。
作一名真实,诚实,优秀的科技工作者!
游客

返回顶部