download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:3738回复:16

[求助] mini-filter将光盘设为唯读,Nero不能烧档案,但是可以烧ISO档

楼主#
更多 发布于:2008-07-25 17:33
Dear :
小弟在mini-filter分别针对IRP_MJ_DEVICE_CONTROL, IRP_MJ_FILE_SYSTEM_CONTROL然后判断是/cdrom光驱装备,

然后看一下程式码......以下是在XxxPrePassThrough的判断....另外还有判断volume name

                                       if ((Data->Iopb->MajorFunction == IRP_MJ_DEVICE_CONTROL) ||
                                                   (Data->Iopb->MajorFunction == IRP_MJ_FILE_SYSTEM_CONTROL)
                                                   ){
                                                           DbgPrint("FLT_PREOP_COMPLETE\n");
                                                           Data->IoStatus.Status = STATUS_ACCESS_DENIED;
                                                   Data->IoStatus.Information = 0;
                                                   retValue = FLT_PREOP_COMPLETE;    
                                       }
这样可以让Nero烧单一档案的时候不能烧,但是我用Alcohol 120%要烧ISO档案的时候,却可以正确的刻录进去光碟.....

不知道要达到  光盘唯读  这样的功能.....mini-filter还要过滤那些 Major Function ?...........

另外在所有抓到的MJ里面有一个0xf2..........不知道这个是代表什么功能(wdm.h里面没找到....).....若有大牛知道....烦请提供一些思绪....谢谢.................
destinyqq
驱动牛犊
驱动牛犊
  • 注册日期2006-09-18
  • 最后登录2013-01-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望35点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-25 17:58
应该是自定义的吧

我依稀记得大于0x80的就属于自定义范围 低于0x80的为微软的保留范围
zh002008
驱动牛犊
驱动牛犊
  • 注册日期2004-08-22
  • 最后登录2013-09-06
  • 粉丝1
  • 关注1
  • 积分545分
  • 威望155点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-26 14:52
换条路吧,文件系统层上不能禁止全部的刻录,SCSI下试试吧
destinyqq
驱动牛犊
驱动牛犊
  • 注册日期2006-09-18
  • 最后登录2013-01-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望35点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-07-26 21:19
确实

如果只是设置只读的话 还是在class filter 处理比较好
download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2008-07-29 10:01
那我可以請問一下各位大牛....

我可以用mini-filter把燒錄到光碟的資料換掉嗎?

比如說換成空的  加密過的  之類的   來達到   讓刻錄無效的功能?

best regards.
download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2008-08-04 09:42
= =...答案應該是不行的....自結....
dreamsity
驱动小牛
驱动小牛
  • 注册日期2006-09-01
  • 最后登录2013-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望821点
  • 贡献值1点
  • 好评度68点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2008-08-04 11:27
烧录禁止不是这样做的。
方案错了。
要使用下层卷过滤驱动。
而且还要放在设备栈的最底层。
一切都是时间问题!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2008-08-04 19:41
RING3 API HOOK就能搞定。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
dreamsity
驱动小牛
驱动小牛
  • 注册日期2006-09-01
  • 最后登录2013-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望821点
  • 贡献值1点
  • 好评度68点
  • 原创分1分
  • 专家分0分
8楼#
发布于:2008-08-07 12:53
RING3 API HOOK,好像不能搞定所有的情况的。
window自带的烧录拒绝,可以使用API HOOK,
但nero cdrecord等工具,特别是那些开源的,或者小公司开发的,
使用API HOOK,好像就不是很好了。
一切都是时间问题!
download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2008-08-22 16:23
請問用toaster的範例去過濾DVD-RW設備

主要要過濾哪個Major Code?

我看過燒ISO都是IRP_MJ_DEVICE_CONTROL

IRP_MJ_SCSI沒看到SCSIOP_WRITE或SCSIOP_WRITE6的資訊
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-08-25 10:47
引用第9楼download于2008-08-22 18:23发表的  :
請問用toaster的範例去過濾DVD-RW設備

主要要過濾哪個Major Code?

我看過燒ISO都是IRP_MJ_DEVICE_CONTROL
.......


IRP_MJ_SCSI + IRP_MJ_DEVICE_CONTROL
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2008-08-27 16:32
請問rayyang2000
可以再提供詳細一點的判斷刻錄的內容嗎?(或欄位....要判斷那些欄位...XD), 謝謝

依照我自己寫的devlower掛到\Device\00000075 (過濾的光碟對象)
刻錄ISO時用IrpTracker列出上下的關係大概是

\Device\CdromX
            |
\Driver\imapi
            |
\Driver\devlower  (我這邊過濾IRP)
            |
\Device\00000075

可是我根本不知道要怎麼再進一步判斷他現在是刻錄ISO...?只能用猜的....

看了IRP_MJ_DEVICE_CONTROL 和 IRP_MJ_INTERNAL_DEVICE_CONTROL

只能說....= =...真的沒什麼頭緒....

另外IoControlCode 0x1b0011 <---這個也不知道是什麼....(用IrpTracker看是SCSI_EXECUTE_IN)
=========================20080828更新================================================

用Alcohol 120%刻錄ISO檔案, 在IRP_MJ_INTERNAL_DEVICE_CONTROL分析SrbFlags並無發現SRB_FLAGS_DATA_OUT
一般讀時是有收到IRP............刻錄時反而沒有看到有印出訊息....是我弄錯方向了嗎? 用devlower..錯誤嗎?
我應該怎麼判斷....= =....?
download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2008-08-29 18:53
請問有大牛能將整個 ISO文件 刻錄到空白光碟時 ,
此時資料在核心層內會經過那些設備棧的流程,整個說出來嗎....?
還是我要用windbg一步一步去trace?= =..說到這個wibdbg的技巧真的很重要.....
因為我用toaster掛
cdrom dev lower filter 和
cdrom class upper filter 以及
lagacy filter driver (掛\\DosName\X:) (這是光盤符號...)
都感覺DebugView列出的訊息都沒有刻錄的.......難道是toaster bus filter?
還是說刻錄機唯讀這個是不能達到的技術? 有哪位大大真的做過,請來這邊說說看....
或許我真的有點悶了......需要去外面透透氣了....

 
download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2008-09-05 10:35
I did not  found out someone could filter scsi of Alcohol 120% yet.
The way working i found was pop out the disc when CD/DVD-RW inset the blank disc.

CloneCD, Alcohol 120%, Nero, and other burning software have compatible problem.
they always cause BSOD when I installed them together.
Especially when i install a class filter under the lowerfilters of CloneCD, it got BSOD.

I know CloneCD using lower class toaster filter tech.
Alcohol pass i/o direct to the cdrom and classpnp
nero use apsi framework tech.

There is no software can achieve lock alcohol 120% as I known. (is read only not baned device)

if I am wrong, please figure it out , thanks.

best regards.
szs505
驱动牛犊
驱动牛犊
  • 注册日期2009-08-08
  • 最后登录2011-05-28
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望111点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2009-10-14 15:53
这个问题最后怎么解决的?
0x80000000
驱动牛犊
驱动牛犊
  • 注册日期2006-04-19
  • 最后登录2010-03-26
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望19点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2009-10-14 23:24
我看应该
找IRP_MJ_INTERNAL_DEVICE_CONTROL
然后找 ==IOCTL_CDROM_CURRENT_POSITION
DataBuffer里是数据
通过IRPTrace看了下 没验证 高手来讲评一下
一天一点点
liuyan1
驱动老牛
驱动老牛
  • 注册日期2001-08-27
  • 最后登录2023-04-18
  • 粉丝0
  • 关注0
  • 积分1031分
  • 威望477点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2009-10-15 14:24
个人觉得利用i/o断点寄存器,来做禁止i/o可能比较好。

只要人家有驱动,直接i/o啥的方式实现,常规的 IOCTL_,MJ拦截都是不好用的。

另:楼主的文法好像是岛民吧?
楼上的客,楼下的客,听我老坎说明白,要苛屎有草纸,不要扯我的麦席子,要苛尿有夜壶,不要在床上划地图。
游客

返回顶部