新视界

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 111|回复: 1

BFI原盘黑屏及乱序修复

[复制链接]
  • TA的每日心情
    开心
    2020-1-20 07:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    109

    主题

    6

    帖子

    221

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    金币
    215
    威望
    0
    发表于 2020-2-18 01:09 | 显示全部楼层 |阅读模式
    首先声明一点,我只是一个小白,以下修复工程及文档为nnezyj所著,我只是代其发表。

    前言

           BFI的蓝光盘已经发布了很多,但均反映问题多。目前我已知的问题有区码锁定无法破解、黑屏、乱序三个问题。前几天偶遇《纽伦堡大审判》BFI版,播放就黑屏了,为此,特请教本站nnezyj大佬,在他亲自操刀下,终于修复了此盘播放黑屏问题。但播放时发现了乱序问题,由于此盘乱序不同与狮门肉酱盘的乱序,BFI可谓把蓝光原盘结构用到了极致,经nn大佬指导,终于完美修复此盘的乱序问题。偶不敢独享,所谓“独乐乐不如众乐乐”,故将此盘整个修复工程发表出来。如果不妥的地方,还请各位指正。

            本篇实例操作原盘:Judgment at Nuremberg 1961 1080p GBR Blu-ray AVC DTS-HD MA 5.1-COASTER。
          主要修复
           一、黑屏问题
           二、乱序问题(经典)
          注:修复的过程是枯燥的,需要不停的尝试修改、播放检测。如果无耐心,你可以不必往下看了。


          一、黑屏问题
          此盘使用PowerDVD17、18,DVDFAB Player、TMT5播放均黑屏,使用Scenarist QC播放仍然无法进入,任何画面都没有,Ctrl+T结果一样。      





           从文件来看,这张盘应该是一张BD-J菜单类的盘。
           使用黄鸭子打开此张光盘,如下图



           【这里面有关GPR、PSR的含义我就不多说了,不懂的参见WJ版主和nnezyj大佬相关的IG菜单帖子。】
           一般说,寄存器GPR的默认值是0,道理很简单,你没有给寄存器赋值,里面是不会有数字的,初始值都是0。从指令上来看,出现了两次“Jump Title 7”。这个Title 7在哪?左边Index.bdmv里面有,是一个BD-J程序,文件是09955。
           继续检查
          

           正常情况,跳到BD-J一般会出来菜单,但首先得对一些播放使用到的区码、播放公司Logo画面等,但从指令上来看,Jump title 7之前并没有出现诸如PSR20、Play PL之类的指令。我曾经使用Backup里面的文件进行还原,然后制作成光盘,使用DVDFAB 进行修复,但依然结果一样,无法播放。
    一番折腾之后,只有怀疑BD-J会不会就是对原盘进行正版检测一类的程序。
           这张盘的SBD工程
          

           先分析一下黄鸭子里面的指令跳转情况
           0000  [48400300,0000055D ,00000000 ]  NE GPR1373, 0      if GPR1373!=0
           0001  [20810000,00000005 ,00000000]  GoTo 5              跳转到第5行
           0002  [50400008,000008CD ,0000003D ]  Rnd GPR2253, 61
           0003  [50400007,000008CD ,0000003D ]  Mod GPR2253, 61
           0004  [20810000,0000000A ,00000000]  GoTo 10
           0005  [48400200,0000055D ,00000001 ]  EQ GPR1373, 1      if GPR1373=1
           0006  [20810000,0000000A ,00000000]  GoTo 10            跳转到第10行
           0007  [50000001,00000430 ,80000004 ]  Move GPR1072, PSR4   
           0008  [50400001,000002BD ,00000001 ]  Move GPR701, 1
           0009  [21810000,00000007 ,00000000]  Jump Title 7
           0010  [48400300,0000055D ,00000000 ]  NE GPR1373, 0     if GPR1373!=0
           0011  [20810000,0000000F ,00000000]  GoTo 15
           0012  [50000001,00000430 ,80000004 ]  Move GPR1072, PSR4   
           0013  [50400001,000002BD ,00000001 ]  Move GPR701, 1
           0014  [21810000,00000007 ,00000000]  Jump Title 7           
           0015  [50400001,00000000 ,00000002 ]  Move GPR0, 2
           0016  [48400100,00000000 ,00000002 ]  BC GPR0, 2
           0017  [20810000,00000015 ,00000000]  GoTo 21
           0018  [50400001,00000A73 ,000000C9 ]  Move GPR2675, 201
           0019  [50400001,00000A76 ,00000015 ]  Move GPR2678, 21
           0020  [20810000,00000033 ,00000000]  GoTo 51
           前面已经讲到,GPR寄存器初始值是0。我们按照程序执行过程一条一条往下走,发现执行到14行,就跳回到BD-J程序了。细心一点就会发现,这段代码在前15行,中始终拿GPR1373在0和1之间进行比较判断。那改变GPR1373的值,让GPR1373=1,再从头执行一遍代码,就会发现最后就跳过了“Jump Title 7”。这样,就可以断定BD-J只是一个检测代码,此原盘仍然是IG菜单,并不是最初我们看到的BD-J菜单。
           到这,我们就怀疑这个GPR1373的值和“Jump Title 7”是我们解决问题的尝试点了。使用大金,在第一行前面增加一行导航指令。
            

          然后MUX一下。注意下图箭头的地方
          

          完成后,将index.bdmv和MovieObject.bdmv替换回原盘(注意备份原盘的这两个文件,不要问我为什么,习惯问题)。
          使用黄鸭子打开
          

          播放,一切OK了。
          

          

          

          二、乱序问题
          BFI的乱序问题比较突出,由于以前没接触过,不知道BFI的乱序模式是啥样。今天打开一开,真是把蓝光原盘结构运用到了极致,与狮门的完全不同。狮门的乱序是把一整段视频从物理上切割成若干个视频文件,然后通过播放列表进行组合成若干个不同的mpls文件,破解原盘时由于狮门的防盗版技术造成未能菜单未能指向正确的mpls。而BFI则不同,视频主文件仍然是一个,但同样播放时间的mpls若干,跟狮门一样,但里面只有一个是正确的。视频段采取从主视频中截取,然后在每个mpls中进行不同组合。
          

          

           播放此张原盘,发现主菜单“PLAY FILM”后,播放的是0000.mpls。
          

           众所周知,修复乱序问题,就是要从众多的mpls中找出一个正确的mpls。
           经过繁琐的查找,终于找到了正确的mpls,00275.mpls。
          

          为了验证,我使用外挂字幕方式,然后通过拖动检查视频是否与字幕一致来判断,也许方式有点老套,但本人只会这种。
          修复这种IG菜单类乱序问题,目前有两种方式,第一种修改代码方式,第二种替换mpls方式。因为没有狮门类的mpls编号通过BD-J换算,所以采用第二种方式就是最简单的了。
          第一种方式代码修改
         我是采用SQC跟踪方式,点击“PLAY FILM”后,查看最后的指令,发现寄存器GPR2253=000,跟我们播放时调用到的mpls列表一致。
         

         修改代码通过黄鸭子来进行
          

          注意点击左下角的“Save”按钮。
         第二种方式就很easy咯,直接把00000.mpls删除,然后将00275.mpls复制一份,更名为00000.mpls即可。
         经验证,以上两种修改方式均能彻底修改这张原盘的乱序问题。





    上一篇:2020年2月18日签到记录贴
    下一篇:2020年2月19日签到记录贴

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-3-9 06:49
  • 签到天数: 46 天

    [LV.5]常住居民I

    2

    主题

    61

    帖子

    909

    积分

    高级会员

    Rank: 4

    金币
    848
    威望
    0
    发表于 2020-2-18 02:53 | 显示全部楼层
    又是一个好技术文章
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|dashen.ml

    GMT+8, 2020-6-3 20:18 , Processed in 0.019075 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表