|
主题: 能不能解密DCR文件????
|
 Anni.e.Xtra
职务:普通成员
等级:1
金币:10.0
发贴:304
注册:2000/9/19 10:49:44
|
#12001/3/23 17:12:16
如题,有没有什么专门的软件啊....记得我上次贴过的啊.....
|
 donlee
职务:普通成员
等级:1
金币:1.0
发贴:271
注册:2000/12/8 8:52:18
|
#22001/3/26 7:34:45
这篇文章可供参考: www.macromediachina.com/forum/view.asp?fid=director&id=17335这是我对还原dxr文件的一个综述吧。 引用:
Director文件的保护与还原 donlee
作为广受多媒体开发人员钟情的开发平台,Director可以根据开发人员的需要输出多种格式的文件,其中最常用的格式当属dir文件以及加以保护的dxr文件,后两种格式的文件是用于播放的,不可再用Director编辑,一般最终作品都做成这样的格式。但在我们在实际开发过程中,往往由于备份文件损坏或出于学习观摩的目的等种种原因,有必要打开这类文件作为参考或继续编辑。本文从技术的角度出发,完全依靠Director自身提供的工具,对dxr文件的保护与还原手段作一探讨,所有讨论基于Director 8.0。
一、保护
Director在其IDE环境可通过逐级选择菜单"Xtras"->"Update Movie...",来把文件改为dxr格式,或通过publish输入为dcr格式的文件,不允许再被Director打开或编辑,以此来保护作品不被篡改。这是Director所提供的最基本的保护手段。
二、还原
不知出于何种考虑,Director所内嵌的lingo语言中有savemovie、save castlib两个保存movie和cast的命令,而且这两个命令对于dxr和dcr也有效!正是这两个命令,为还原被保护的文件大开方便之门。由于我们不能在Director下直接打开这两种文件,于是我们想到了MIAW,把它们通过MIAW打开,Director允许使用tell命令向miaw发送消息,因而我们尝试用这种途径来遥控dxr保存成可以再编辑的dir文件。作法如下: 新建一个movie,编写一个movie script,内容为:
on outputdir input output
miaw=window(input)
tell miaw to savemovie output
forget(miaw)
end 假设我们要打开的文件是“D:\Locked.dxr”,希望解除保护并另存为“D:\unlocked.dir”,则执行此movie,在message窗口中输入outputdir "D:\Locked.dxr" "D:\unlocked.dir",然后我们察看D盘根目录,将会在那里发现unlocked.dir文件,这个文件可以用Director打开,所有的score、member安排与原文件毫无二致,但其中所有的script内容均为空白。 正如把李白的诗翻译成英文,再由英文译成的中文已完全见不到诗仙的影子。由于转换成dxr格式时,movie内的script都经过编译,转换成由计算机执行的代码。所以用savemovie也不可能得到原来文本格式script,下面谈到的所有还原手段对此都无能为力。 目前在Director各论坛上大受青睐的还原工具dirOpener实际上完全基于以上思路来完成的,这个小工具也的确是用Director来制作的。但dirOpener具有一个很好用的界面并补充了一些关于光标和不规则窗口的“秘技”,这为Director初学者提供了一些方便,但对于有一定lingo编程基础的人来说,它的能力实在有限,不如自己做一个更强的opener,至于理由,请看“再保护”。
三、再保护
通常开发人员希望全面保护自己的作品,即使是score也不愿被他人窥视,怎样防止别人用savemovie之类的手段来还原呢?还是用lingo!我们可以写一个处理程序,当movie接收到savemovie命令时不保存movie,而是执行我们所定义的代码,对于save castlib也做同样处理。下面的例子是方法之一:
on savemovie
quit
end
on save castlib
quit
end 如果movie script含有以上内容时,则当movie接收到savemovie命令时,不会执行保存,而是退出集成环境或projector,如果企图用dirOpener还原这样的dxr文件,结果将是没有任何dir或cst文件输出,并且dirOpener自身也被退出,这是由quit命令的特点决定的,既然dirOpener是用Director制作的,自然难以逃此噩运,有此软件的朋友一试便知。
四、再还原
为了解除用上述savemovie方法施加的保护,我们再次仔细研究一下lingo,发现可以用lingo在runtime动态地增加或删除member,或修改现有的member的内容。于是我们有了这样的想法,先检查一下movie中所有的member,如果是script,则删除它,自然savemovie之类的保护手段也不存在了。前面已经讨论过,还原出来的dir总是丢失所有script内容,所以在这里删去它们也不会带来更多的遗憾。解除所有script作用的代码(包括保存新的movie部分)如下:
FileToBeOut=the file name to be output --modify it in your scripts
miaw=window(FileToBeOut)
tell miaw
repeat with i=1 to the number of castlibs
repeat with j=1 to the number of members of castlib i
if member(j,i).type=#script then
if member(j,i).scripttype=#movie then
member(j,i).scripttext="" --script内容成为空白,但member名称会保留
--或者 member(j,i).erase() --整个member被删除
end if
end if
end repeat
end repeat
--上面的两层循环查找所有cast中的所有member,并解除所有movie script的作用
savemovie "输出文件名" --为输出的文件命名
end tell
forget(miaw)
至此,基于lingo的保护完全失效。我想在Director的下一个版本中,Macromedia应该不会保留这种双手互搏之术了。
如果朋友们有兴趣,可以在此基础上包装一个好界面,自己做一个新的dirOpener。如果希望方便使用,可以用fileio xtra的displayopen和displaysave函数,来选择要输入、输出文件的位置及文件名。至今我还是不能理解为什么作为免费软件的dirOpener要捆绑大而贵的三个net相关的xtras和directOs。
这种方法并不是万能的,尤其对于dcr文件,上面的手段往往无所施其技。
我想这是最后一个关于还原director文件的贴子,到此为止吧。
I'm a freelance,not a cracker.
Donlee, 我把它转贴过来了。 谢谢你, 我也转贴到经典一份:) Really good work!
编辑历史:[这消息被flyingbird编辑过(编辑时间2001-03-26 08:32:16)] [这消息被flyingbird编辑过(编辑时间2001-03-26 08:36:23)]
|
 夏小雨
职务:普通成员
等级:1
金币:0.0
发贴:13
注册:2000/12/21 15:00:49
|
#32001/3/30 10:29:09
第一次用diropener的时候是可以的,可当我第二次用的时候就解不开文件了,我重新下载了也还是没有用 窗口中告诉我是解好可,可我在指定目录中却找不到被解开的文件
|
 crystaljiang
职务:普通成员
等级:1
金币:0.0
发贴:36
注册:2000/11/28 15:37:08
|
#42001/5/10 12:43:51
那里有下载dirOpener的,请写出地址
|
 toto
职务:版主
等级:5
金币:17.0
发贴:2582
注册:2004/1/16 23:17:26
|
|