duleax
驱动牛犊
驱动牛犊
  • 注册日期2007-06-02
  • 最后登录2009-07-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
阅读:13920回复:34

在应用层用HOOK技术做文件透明加密的问题

楼主#
更多 发布于:2007-07-16 23:09
在应用层用HOOK技术做文件透明加密,可以实现比较简单类型的文件加密解密,比如.txt文件,
.bmp文件,但是对于象Word,excel等文件加密后解密老是会报文件内容无法正确读取的错误。
有这方面的经验高人请出手。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2007-07-17 09:07
你得搞明白它写文件的规律才行.

而且应用程序hook作加解密,有很多无法解决的问题
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
板凳#
发布于:2007-07-17 13:03
引用第1楼znsoft于2007-07-17 09:07发表的  :
你得搞明白它写文件的规律才行.

而且应用程序hook作加解密,有很多无法解决的问题


比如说:内存映射
人总在矛盾中徘徊。。。
我最老实
驱动小牛
驱动小牛
  • 注册日期2005-09-11
  • 最后登录2010-01-27
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望253点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-18 10:07
引用第2楼devia于2007-07-17 13:03发表的  :


比如说:内存映射


内存映射也可以hook吧! 虽然没有试验过!!
养牛专业户
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-18 10:23
引用第2楼devia于2007-07-17 13:03发表的  :


比如说:内存映射


HookApi根本不用管内存映射,而且程序的错误都能被系统捕获,所以不象驱动容易导致蓝苹之类的

只是控制粒度太粗,有些事情无法彻底解决
提问归提问,还是只能靠自己
我最老实
驱动小牛
驱动小牛
  • 注册日期2005-09-11
  • 最后登录2010-01-27
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望253点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-07-18 10:49
引用第4楼looksail于2007-07-18 10:23发表的  :


HookApi根本不用管内存映射,而且程序的错误都能被系统捕获,所以不象驱动容易导致蓝苹之类的

只是控制粒度太粗,有些事情无法彻底解决


怎么不用管内村映射?? 直接map文件,然后访问内存区域你不hook 怎么过滤??
养牛专业户
xiabl
驱动牛犊
驱动牛犊
  • 注册日期2005-10-24
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望77点
  • 贡献值0点
  • 好评度71点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-18 12:15
内村映射是可以禁用的,  
不用hook也可以实现(与磁盘设备有关)
小桥流水人家
driver12345
驱动牛犊
驱动牛犊
  • 注册日期2005-11-15
  • 最后登录2007-10-28
  • 粉丝0
  • 关注0
  • 积分814分
  • 威望84点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-07-18 16:38
应用层的还是比较稳定
并且不用考虑缓存的问题
这些我都实现了
但就是不能做到完全透明,就是要分析每类应用程序的特征才性
其他的方面比驱动要好
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
8楼#
发布于:2007-07-19 14:16
driver12345
hook粘贴有没有搞定?
driver12345
驱动牛犊
驱动牛犊
  • 注册日期2005-11-15
  • 最后登录2007-10-28
  • 粉丝0
  • 关注0
  • 积分814分
  • 威望84点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-07-19 19:17
粘贴都没有问题
不管是缓冲区的还是文件的
wangjinn8
驱动牛犊
驱动牛犊
  • 注册日期2007-07-20
  • 最后登录2007-07-20
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-07-20 11:00
没有HOOK的应用程序怎么办?
driver12345
驱动牛犊
驱动牛犊
  • 注册日期2005-11-15
  • 最后登录2007-10-28
  • 粉丝0
  • 关注0
  • 积分814分
  • 威望84点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-07-20 12:59
没有hook的是非法的应用程序
非法的不能解密文档
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
12楼#
发布于:2007-07-20 14:57
楼上做的HOOK不是全局的HOOK
我最老实
驱动小牛
驱动小牛
  • 注册日期2005-09-11
  • 最后登录2010-01-27
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望253点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-07-20 16:53
引用第6楼xiabl于2007-07-18 12:15发表的  :
内村映射是可以禁用的,  
不用hook也可以实现(与磁盘设备有关)


禁用内存映射? 不是吧!!!
养牛专业户
duleax
驱动牛犊
驱动牛犊
  • 注册日期2007-06-02
  • 最后登录2009-07-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-07-21 11:39
请教driver12345 :
我仅HOOK了以下几个函数:CreateFileA,CreateFileW,ReadFile,ReadFileEx,WriteFile,WriteFileEx,CloseHandle。在CreateFileW中判断文件是否需要加密,如果需要,就打开该文件,读入整个文件的长度,然后加密,最后写一个加密标识到硬盘的系统目录下。在ReadFile时如果发现这个文件已经存在加密标志,就对每一块读出的BUFFER解密。这种办法对于简单文件如.txt,.bmp文件可以正确加密和解密,但是对于offcie文档虽然也可以拦截其读写操作,但是每次用word打开一个加密后的文件,word就会报告文件格式已经损坏。但是在调试信息中我明明看到已经调用了我的解密函数,请问这中间存在什么漏洞呢。给个提示吧。多谢!
xiexiecn
驱动牛犊
驱动牛犊
  • 注册日期2004-02-25
  • 最后登录2009-02-23
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望28点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-07-23 08:41
有关偏移的函数没有处理。
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-07-23 21:57
应用层是无法直接处理CreateFileMapping的,所以要用另一种方法,你在浪费时间,多想想吧

我的应用层加密很稳定,如下图
 

图片:11111111111.JPG



但是对于大型的3d装配体效率不够高,曾有客户拿来加密12000多件的装配体,虽说客户总工自己说延迟几分钟无所谓,但吾等汗颜。文件过滤驱动才是王道,不过难度很大,所以市面上......

我在文件过滤中测试加密测试200兆500件的装配体损耗是毫秒级,效率损耗基本为0

但是有一些问题摆在面前需要逐个解决,越发痛恨微软
提问归提问,还是只能靠自己
KernelSword
驱动牛犊
驱动牛犊
  • 注册日期2007-07-13
  • 最后登录2014-02-20
  • 粉丝5
  • 关注0
  • 积分322分
  • 威望161点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2007-07-24 09:10
我也确实见过APIHOOK实现文件透明加解密的,感觉还很不错。不过只能针对指定的几种类型的文件,这样也够了,只要能对常用的几个类型加解密就可以了,那些exe,dll,sys加解密没有意义。
QQ:606140 www.kernelsword.com
driver12345
驱动牛犊
驱动牛犊
  • 注册日期2005-11-15
  • 最后登录2007-10-28
  • 粉丝0
  • 关注0
  • 积分814分
  • 威望84点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-07-24 11:11
不用处理CreateFileMapping 这
应用层的方法也很多,如果用驱动的方法来理解的话可能就不对了
可以支持的类型是很多的:
office wps pdf
cad
photoshop 3dmax coredraw
常用的都可以支持
duleax
驱动牛犊
驱动牛犊
  • 注册日期2007-06-02
  • 最后登录2009-07-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-07-25 22:38
为何要处理"有关偏移的函数",没有想明白,我用的是简单的异或加密,不管从什么位置读,都可以啊.
如果要处理位置偏移的函数:SetFilePointerEx,又该做些什么操作呢?
另外,对于异步重叠I/O是否需要专门处理呢?
上一页
游客

返回顶部