阅读:4030回复:16
[求助] mini-filter将光盘设为唯读,Nero不能烧档案,但是可以烧ISO档
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里面没找到....).....若有大牛知道....烦请提供一些思绪....谢谢................. |
|
沙发#
发布于:2008-07-25 17:58
应该是自定义的吧
我依稀记得大于0x80的就属于自定义范围 低于0x80的为微软的保留范围 |
|
板凳#
发布于:2008-07-26 14:52
换条路吧,文件系统层上不能禁止全部的刻录,SCSI下试试吧
|
|
地板#
发布于:2008-07-26 21:19
确实
如果只是设置只读的话 还是在class filter 处理比较好 |
|
地下室#
发布于:2008-07-29 10:01
那我可以請問一下各位大牛....
我可以用mini-filter把燒錄到光碟的資料換掉嗎? 比如說換成空的 加密過的 之類的 來達到 讓刻錄無效的功能? best regards. |
|
5楼#
发布于:2008-08-04 09:42
= =...答案應該是不行的....自結....
|
|
6楼#
发布于:2008-08-04 11:27
烧录禁止不是这样做的。
方案错了。 要使用下层卷过滤驱动。 而且还要放在设备栈的最底层。 |
|
|
7楼#
发布于:2008-08-04 19:41
RING3 API HOOK就能搞定。
|
|
|
8楼#
发布于:2008-08-07 12:53
RING3 API HOOK,好像不能搞定所有的情况的。
window自带的烧录拒绝,可以使用API HOOK, 但nero cdrecord等工具,特别是那些开源的,或者小公司开发的, 使用API HOOK,好像就不是很好了。 |
|
|
9楼#
发布于:2008-08-22 16:23
請問用toaster的範例去過濾DVD-RW設備
主要要過濾哪個Major Code? 我看過燒ISO都是IRP_MJ_DEVICE_CONTROL IRP_MJ_SCSI沒看到SCSIOP_WRITE或SCSIOP_WRITE6的資訊 |
|
10楼#
发布于:2008-08-25 10:47
引用第9楼download于2008-08-22 18:23发表的 : IRP_MJ_SCSI + IRP_MJ_DEVICE_CONTROL |
|
|
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..錯誤嗎? 我應該怎麼判斷....= =....? |
|
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? 還是說刻錄機唯讀這個是不能達到的技術? 有哪位大大真的做過,請來這邊說說看.... 或許我真的有點悶了......需要去外面透透氣了.... |
|
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. |
|
14楼#
发布于:2009-10-14 15:53
这个问题最后怎么解决的?
|
|
15楼#
发布于:2009-10-14 23:24
我看应该
找IRP_MJ_INTERNAL_DEVICE_CONTROL 然后找 ==IOCTL_CDROM_CURRENT_POSITION DataBuffer里是数据 通过IRPTrace看了下 没验证 高手来讲评一下 |
|
|
16楼#
发布于:2009-10-15 14:24
个人觉得利用i/o断点寄存器,来做禁止i/o可能比较好。
只要人家有驱动,直接i/o啥的方式实现,常规的 IOCTL_,MJ拦截都是不好用的。 另:楼主的文法好像是岛民吧? |
|
|