主题:  再谈怎样还原protectd movie?

donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#12000/12/25 8:30:54
上次在“diropner及其diy”(谢谢flyingbird兄转贴过来)一文中谈到,用:
on savemove
   nothing
end savemovie
可以保护movie,从而使diropener一类的还原工具对之无效,事实的确如此,经测试diropener8.0仍无法打开此类dxr文件。
  但是我们进一步可以想到,这种保护是通过on savemovie handler来实现的,那么我们只要删去on savemovie所在的script member,那么保护不就被解除了吗? 而lingo具有动态增删member的能力! 遗憾的是我们很难知道到底哪一个member是我们要删去的member,从另一方面看,迄今为止,对于dxr、dcr文件,由于所有的script都被编译为director engine所识别的格式,原始文本已不复存在,所以要还原最初的script是徒劳的。考虑到这一点,删除所有script也没有什么可惜了,下面要做的是,删去受保护的文件的所有script member,然后向它发出savemovie命令。具体步骤如下:

1、打开director,新建movie script,内容为:
on getdir
--先建立miaw,以接收命令,无须open
newmiaw=window("movie.dxr")

tell newmiaw
--删去所有script member
repeat with counter= 1 to the number of members
if the type of member(counter)=#script then
member(counter).erase()
end if
end repeat
--保存dir文件
savemovie "NewMovie.dir"

end tell
--释放内存中的miaw对象
forget(newmiaw)
end getdir
以上仅仅是未执行的script,下面来执行它。

2、打开message窗口,输入getdir并回车。
现在看一下指定的目录下应该新增加了文件newmovie.dir。用Director打开newmovie.dir,可以验证:除script外,所有的member和score的排布都在。

为说清楚主要问题,以上的script未考虑删去非内部cast问题,朋友们可以自己尝试一下,进一步自己做一个diropener也可以。

以上讨论纯粹出于技术切磋和研讨,欢迎指正。






toto

职务:版主
等级:5
金币:17.0
发贴:2582
#22000/12/25 12:52:43
你的帖子和flyingbird是不是重复了,最终还是没能解决dxr里的scrip问题t



kun_5d

职务:普通成员
等级:1
金币:0.0
发贴:80
#32000/12/25 15:10:27
script正是我们大家想了解想知道的,



Call Me Simon

职务:普通成员
等级:2
金币:2.0
发贴:646
#42000/12/25 16:00:58
其实donlee 的思路也是使用script 的技巧之一。
另外费心思打开dxr的script, 实在意义不大, 最好的方法就是cjx2000介绍的使用message window and trace button 的方法了。



donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#52001/1/1 15:41:08
所有编译过的dxr和dcr文件中已不可能再还原出原来的script了。可以从两方面看出来:
一,用miaw打开被保护的文件,向它发送消息,查找它哪些member是script,到这里没问题,下面要求他put member (scriptmember).script.text不可能成功.
二,用ultraedit之类的编辑软件打开他们,不可能看到script文本,而这里没有加密,是编译!


我所谈到的方法都是用lingo实现的,我不是cracker.

另外,从projector中还原dir(不包括script)也是可能的,有兴趣的朋友请看:
buraks.com/swifty/