nnezyj 发表于 2017-7-2 03:14:07

BD-J的Scenarist工具重编译及重签名

本帖最后由 nnezyj 于 2017-7-3 23:23 编辑

提供“BD-J 的 Scenarist 工具重编译及重签名.chm”文件,供离线查看!
度盘链接: http://pan.baidu.com/s/1c24DSyO 密码: **** Hidden Message *****
-----------------------------------------------正文开始!-----------------------------------------------


引言:国语视界论坛内的大神们,发布了有关BD-J菜单修改的非常完备的技术帖!在本帖中,仅是针对大神们的技术帖,提供另一种可操作工具途径,增加大家操作的选择性而已!

大神们的BD-J技术强帖:
wj102901[蓝光技术] 玩转BD-J原盘之java字节码修改
wj102901[蓝光技术] 玩转BD-J原盘之java反编译
wj102901[蓝光技术] 手动给BD-J原盘jar文件签名
wj102901[蓝光技术] BD-J原盘java签名信息中SHA1-Digest值的计算
wj102901[蓝光技术] 让English走开,狮门影业BD-J菜单中文化
wj102901[蓝光技术] BD-J菜单修改
wj102901[蓝光技术] BD-J原盘区码修改教程
zvxc122[蓝光技术] sony字符型蓝光菜单修改简单分析


一、安装 Scenarist BD
  因为本文中需要使用到的主力工具是 Scenarist BD-J 及 Scenarist Safeguard,这两个软件是 Scenarist BD 的三套件中的一员!如果没有请安装Scenarist BD!在安装 Scenarist BD 过程中,会自动将 BD-J 所需要的 JAVA 环境安装完成。【jre 1.5】


二、准备反编译工具
  因为 Scenarist BD-J 是对 java 明文进行操作的,所以需要将要做修改的 jar 内的 .class 文件反编译为 Scenarist BD-J 可读取的 .java 文件。
  在 wj102901[蓝光技术] 玩转BD-J原盘之java反编译 一文中,已经提供了很好的反编译工具介绍及使用。坛友们可以前往阅读,选择适合自己使用的一款!
  作者本文使用的是 JD-GUI,官网地址:http://jd.benow.ca/。需要注意的是,启动 JD-GUI 需要 java 环境。如果点击可以直接启动,则已安装,直接进入下一步!如果出现如图的提示,则点击确定,会自动跳转至 java 下载页面,根据提示下载安装即可。或前往 https://www.java.com/zh_CN/download/manual.jsp 下载所需版本,安装亦可!
  https://www.z4a.net/images/2017/07/02/2017-07-01_114022.png


三、获取需要修改的 .java 文件
  启动 JD-GUI,然后打开需要修改的 jar 文件,找到需要修改的 .class 文件,然后点击 File > Save,将这个反编译后的 .java 文件保存到电脑上。
  https://www.z4a.net/images/2017/07/02/2017-07-01_130626.png


四、首次启动 Scenarist BD-J
1). 设置工作空间
  启动 Scenarist BD-J。第一次启动需要设置“工作空间”,其实就是项目要放置的位置,根据自己需要设定合适的位置。点击“确定”完成设置并启动。本文使用的目录路径为“C:\workspace”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_131534.png
  第一次启动的页面,如图所示,点击右侧的“工作台”按钮,跳转至正常工作页面。
  https://www.z4a.net/images/2017/07/02/2017-07-01_131829.png

2). JRE 设置
  点击菜单栏“窗口 > 首选项”,弹出首选项对话框。
  https://www.z4a.net/images/2017/07/02/2017-07-01_133537.png
  展开“Java > 已安装的 JRE”。确保在“已安装的 JRE”中勾选了“jre 1.5.0_07”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_134539.png
  如果“已安装的 JRE”中没有“jre 1.5.0_07”。点击“添加”按钮,弹出“添加 JRE”对话框。
  https://www.z4a.net/images/2017/07/02/2017-07-01_142306.png
  点击“JRE 主目录”右侧的“浏览”按钮。在弹出的“浏览文件夹”选框中选择到 jre 1.5.0_07 所在的安装目录,点击“确定”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_142330.png
  此时,“添加 JRE”对话框中显示了刚刚选择添加的 jre 的信息,点击“确定”完成添加。
  https://www.z4a.net/images/2017/07/02/2017-07-01_142340.png
  勾选中“jre 1.5.0_07”,点击“确定”按钮关闭首选项。

3). 新建 BD-J 项目
  点击菜单栏“文件 > 新建 > BD-J Project”,弹出新建向导。
  https://www.z4a.net/images/2017/07/02/2017-07-01_145217.png
  在项目名输入项目名称。本文使用“test”作为项目名。
  https://www.z4a.net/images/2017/07/02/2017-07-01_145218.png
  点击“完成”按钮,弹出“打开相关联透视图”对话框,点击“否”,完成新建向导。
  https://www.z4a.net/images/2017/07/02/2017-07-01_145231.png

4). 项目编码设置
  对“包资源管理器”中的 test 项目,右键选择“属性”。弹出项目属性对话框。
  https://www.z4a.net/images/2017/07/02/2017-07-01_145242.png
  点击“信息”,在“文本文件编码”区域,勾选“其他”,选择“UTF-8”,点击“确定”,完成设置。
  https://www.z4a.net/images/2017/07/02/2017-07-01_145246.png

5). 添加 BD-J 库
  对“包资源管理器”中的 test 项目,右键选择“构建路径 > 配置构建路径”。弹出“Java 构建路径”对话框,点击“库”选项卡。展开“BD-J”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_150032.png
  如果没有包含“pbp_1_0.jar” 、“basis.jar” 、“btclasses.zip” 和 “SonicBDJ.jar”等的 jar 库,选中“BD-J”,然后点击“编辑”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_150327.png
  点击“用户库”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_150641.png
  选中“用户库”中的 BD-J,然后点击“添加 JAR”按钮。
  https://www.z4a.net/images/2017/07/02/2017-07-01_150757.png
  在打开的“选择 JAR”浏览窗口中,选择到 Scenarist BD-J 安装目录下的 JARS 文件夹,选中文件夹内所有的文件,然后点击“打开”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_151039.png
  JAR 文件被添加到了 BD-J 库,点击“确定”按钮。
  https://www.z4a.net/images/2017/07/02/2017-07-01_151249.png
  点击“完成”按钮。
  https://www.z4a.net/images/2017/07/02/2017-07-01_150641.png
  展开 BD-J,可以见到刚刚添加的库文件,点击“确定”完成。
  https://www.z4a.net/images/2017/07/02/2017-07-01_151839.png
  可以在 test 项目中,看到新添加的 BD-J 库。
  https://www.z4a.net/images/2017/07/02/2017-07-01_151926.png


五、使用 Scenarist BD-J 修改 .java 文件
1). 添加 .jar 及 .java 文件
  打开 Scenarist BD-J 在电脑上的实际工作目录,本文的工作空间路径 C:\workspace\test
  将第三步中的 jar 文件复制到这个目录内。
  https://www.z4a.net/images/2017/07/02/2017-07-01_153917.png
  将 .java 文件复制到 src 文件夹内。
  https://www.z4a.net/images/2017/07/02/2017-07-01_154644.png
  【注意:根据 .java 的源 class 出处实际情况,在 src 目录内,新建对应文件夹放置.java 文件。】
  【如本示例中的 SettingsMenu.class,其在 com.nnezyj.app 项下,所以新建目录 com > nnezyj > app,放置这个 .java 文件。】
  【也可以通过使用 rar 等解压缩工具打开 jar 文件,查看这个 class 文件的目录情况!】

2). 添加源 jar 文件到用户库
  在 Scenarist BD-J 中,对 test 项目右键,选择“构建路径 > 添加外部归档”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_155957.png
  在“选择 JAR”浏览窗口中,选择到工作目录下的 jar 文件,点击“打开”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_160041.png
  在“包资源管理器”中的 test 项目中,可以看到新添加的“引用库”文件。
  https://www.z4a.net/images/2017/07/02/2017-07-01_160248.png

3). 刷新项目
  在 Scenarist BD-J 中,对 test 项目右键,选择“刷新”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_155238.png
  此时,之前添加的文件,出现在 test 项目中。
  https://www.z4a.net/images/2017/07/02/2017-07-01_160624.png

4). 对 java 文件进行修改
  展开 src 目录,双击打开想要修改的 java 文件。根据需要对 java 文件进行修改。具体如何修改,参考本文开头提供的大大们的教程帖!
  https://www.z4a.net/images/2017/07/02/2017-07-01_160740.png
  修改完成,点击菜单栏“文件 > 保存”,或着按键盘快捷组合键 Ctrl + S 完成保存。
  可以在项目的工作目录下的 classes 文件夹内,查看到实时编译出来的 .class 文件。
  https://www.z4a.net/images/2017/07/02/2017-07-01_161356.png

nnezyj 发表于 2017-7-2 03:14:20

本帖最后由 nnezyj 于 2017-7-3 23:25 编辑

六、重新打包 jar
1). 解包源 jar 文件
  使用 rar 等解压缩工具解压源 .jar,复制除 META-INF 外的所有文件到工作目录的 classes 文件夹内。 跳过“替换同名文件”,因为这些同名的 .class 文件,其实是刚刚修改好的 java 文件编译生成的 class 文件。

2). 创建 Ant 构建文件
  在 Scenarist BD-J 中,对 test 项目右键,选择“导出”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_164344.png
  在“导出”对话框中,展开“常规”,选择“Ant 构建文件”,点击“下一步”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_164434.png
  勾选上我们制作的项目,本文是“test”,点击“完成”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_164729.png
  https://www.z4a.net/images/2017/07/02/2017-07-01_164800.png

3). 修改 Ant 构建文件
  双击打开刚刚新建的“bulid.xml”文件。找到“<javac …> ”项目。在原内容基础上,添加如下红色标记的内容 。

  以下是原始内容:

      <javac debug="true" debuglevel="${debuglevel}" destdir="classes" source="${source}" target="${target}">
            <src path="src"/>
            <classpath refid="test.classpath"/>
      </javac>

  以下是修改后内容:

      <javac debug="true" debuglevel="${debuglevel}" destdir="classes" source="${source}" target="${target}" encoding="UTF-8" >
            <src path="src"/>
            <classpath refid="test.classpath"/>
      </javac>
      <jar basedir="classes" destfile="BDMV/JAR/00000.jar" includes="**/*.*"/>
  https://www.z4a.net/images/2017/07/02/2017-07-01_170344.png
  修改完毕后,点击菜单栏“文件 > 保存”,或着按键盘快捷组合键 Ctrl + S 完成保存!

4). 执行构建
  对刚刚保存的 bulid.xml 右键,选择“运行方式 > 1 Ant 构建”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_180349.png
  在“控制台”可以看到构建过程信息。“BUILD SUCCESSFUL”构建成功!
  https://www.z4a.net/images/2017/07/02/2017-07-01_180906.png
  构建完毕后,在 Scenarist BD-J 中,对 test 项目右键,选择“刷新”,就可以在 BDMV/JAR 中看到刚刚构建好的 jar 文件。
  https://www.z4a.net/images/2017/07/02/2017-07-01_181051.png
  在工作目录下,查看到刚刚打包好的 jar 文件。
  https://www.z4a.net/images/2017/07/02/2017-07-01_182038.png


七、获取 Organization ID
  Organization ID 在新建密钥的时候,需要输入!
  Organization ID 的获取有三种方式!
  1). 使用 Scenarist BD 打开 BD Reauthor Pro 分解的原盘项目,可以在如图的属性位置,查看到 Organization ID。
  https://www.z4a.net/images/2017/07/02/2017-07-01_182615.png
  2). 在 Scenarist BD-J 中,右键项目,选择“导出”。展开“BD-J > BDJO File”并选中,然后点击“下一步”。“Choose mode”选择“Modify existing BDJO file”,然后点击“Browse”,在浏览窗口中,选择到调用这个 jar 文件的 BDJO 文件,然后点击“下一步”。直到能看到 Oranization ID 的页面。
  https://www.z4a.net/images/2017/07/02/2017-07-01_182626.png
  https://www.z4a.net/images/2017/07/02/2017-07-01_182652.png
  https://www.z4a.net/images/2017/07/02/2017-07-01_182709.png
  3). 使用 UltraEdit 、WinHex 、HxD 等可以进行十六进制编辑的软件,查看位于原盘 CERTIFICATE 文件夹下的 id.bdmv 文件。
  如图所示,00000020h 行的 8、9、a、b 位置的四个十六进制数,就是 Organization ID。
  https://www.z4a.net/images/2017/07/03/2017-07-01_182717.png


八、给 jar 文件签名
【本节内容,更详细的信息资料可参见 Scenarist BD-J User Guide 汉化版 】
  因为我们对 jar 文件进行了改动,因此必须对 jar 文件重新签名。
  由于我们不是生产光盘的碟商,所以我们并不拥有原厂碟商的密钥库,因此我们必须自建密钥库来签名文件!
  在wj102901大大的技术强帖[蓝光技术] 手动给BD-J原盘jar文件签名中,大大已经给出了一种修复签名的方法。
  而在本文这里,只是另提供一种对所有 jar 文件的重新签名的方法而已。
  【注意:这里并不是修复原版签名,而是对所有 jar 文件进行新密钥的重新签名!】

  Note:为了保证 Scenarist Safeguard 的功能正常使用,强烈建议安装 jdk-1_5_0_07-windows-i586-p.exe,然后从 C:\Program Files (x86)\Java\jdk1.5.0_07 中,复制 jre 文件夹到 Scenarist BD-J 以及 Scenarist Saftguard 的安装目录下!

1). 启动 Scenarist Safeguard
  点击 Scenarist BD-J 菜单栏“Security > Scenarist Safeguard”,或者点击 Scenarist BD-J 菜单栏上的锁头图标。
  或者直接到 Scenarist Safeguard 安装目录中双击 ScenaristSafeguardWin.exe 启动。
  https://www.z4a.net/images/2017/07/02/2017-07-01_184205.png

2). 新建 KeyStore 文件
  切换选项至“Create New File”,选择密钥库的保存位置,设置密钥库密码,本文设置密码为“12345”。设置完毕,点击“下一步”。
  https://www.z4a.net/images/2017/07/02/2017-07-01_184526.png
  在 “Choose Security Operation” 页面,选择 “Manage Keys and Certificates”(管理密钥和证书),然后点击“下一步”。
  在 “Manage Keys and Certificates” 页面,选择 “Create a Key Pair”,然后点击“下一步”。
  在 “Key Creation” (密钥创作)页面,输入以下属性:
  https://www.z4a.net/images/2017/07/02/2017-07-01_214859.png
  Key Name 密钥对的描述性名称。
  Key Password 访问密钥对时将使用的密码。当处理证书文件,签名请求,以及签名 BD-J 内容时,需要多次输入该密码。
  Key Password Confirmation 在 Key Password 字段中输入相同的密钥,输入此处以进行确认。
  Common Name 当使用通用名称来指代一组相关联的密钥对时,密钥对的通用名称(common name)可能与 Key Name 不同。
  Email Address 负责 BD-J 内容的个人、部门、或着组织的电子邮件地址。
  Organizational Unit 公司内部负责 BD-J 内容的部门。
  Organization 负责 BD-J 内容的公司。
  City or Locality 公司所在城市或地区。
  State or Province 公司所在州或省。
  Country Code 公司所在国家。
  需要特别注意的是,请选择 “Specify the Organization ID”,在所提供的字段内输入之前获取的原盘 Organization ID。
  这里设置密钥密码为“12345”,点击 Finish 按钮完成密钥对的创建。
  https://www.z4a.net/images/2017/07/02/2017-07-01_231607.png
  https://www.z4a.net/images/2017/07/02/2017-07-01_231722.png

3). 签名 jar 文件
  在 “Choose Security Operation” 页面,选择 “Perform Signing Activities”(执行签名活动)并选取 “Sign Jar files” 选项,然后点击 “下一步”。
  https://www.z4a.net/images/2017/07/02/2017-07-02_013734.png
  在 Sign JAR Files 页面,执行以下操作:
  https://www.z4a.net/images/2017/07/02/2017-07-02_014928.png
  在 Key Name 字段处,从下拉列表中选择要用来签名 JAR 文件的密钥。
  在 Key Password 字段处,输入密钥密码。
  点击 Add JAR 按钮,从浏览窗口选择要添加到“JAR Files”列表中进行签名的 JAR 文件,然后点击“打开”按钮。
  【除了添加修改好的 jar 文件外,还要添加原盘中其他的 jar 文件,因为是使用全新密钥进行签名,所以需要对所有的 jar 文件统一更新签名信息!】
  点击“Finish”按钮,完成 jar 文件的签名。
  https://www.z4a.net/images/2017/07/02/2017-07-02_014955.png

4). 创建 app.discroot.crt 证书文件
  在 “Choose Security Operation” 页面,选择 “Manage Keys and Certificates”,然后点击“下一步”。
  在 “Manage Keys and Certificates” 页面,选择 “Create a Certificate File”,然后点击 Next 按钮。
  https://www.z4a.net/images/2017/07/02/2017-07-02_015239.png
  在 “Certificate File Creation” 页面,执行以下操作:
  https://www.z4a.net/images/2017/07/02/2017-07-02_015317.png
  在 Key Name 字段中,使用下拉列表选择要创建证书文件的密钥。
  点击 Certificate File Name 字段旁的 Browse 按钮,为证书文件选择保存位置,然后点击“打开”按钮。
  如有必须,输入 app.discroot.crt 作为证书的文件名。
  点击 Finish 按钮完成证书文件的创建。
  https://www.z4a.net/images/2017/07/02/2017-07-02_015515.png
  https://www.z4a.net/images/2017/07/02/2017-07-02_015548.png

5). 至此,则完成了 jar 内 class 文件的重编译,所有 jar 文件的重签名,以及新建证书文件的工作。

nnezyj 发表于 2017-7-2 03:14:46

九、替换原盘 jar 文件及证书文件
  将 test 项目工作目录下的 BDMV\JAR 路径内的修改并签名过的 jar 文件,以及重新签名后的原盘其他 jar 文件,复制替换原盘的 BDMV/JAR 文件夹内的 jar 文件。
  将 test 项目工作目录下的 app.discroot.crt 证书文件,复制替换原盘的 CERTIFICATE 文件夹内的同名证书文件。


十、进行测试
  实际上,第九步,就完成了所有工作。增加第十步,是为了提醒大家,进行测试,判断是否出错!


-----------------------------------------------帖子结束,谢谢大家的阅读!-----------------------------------------------

meitp 发表于 2017-7-2 16:55:36

老师真厉害!
在老师的指导下,IG菜单的制作基本上学会了,现在在学习IG菜单的2种修改方法,还没有学会。等IG菜单的修改学会了,再好好学学老师的教程,修改BD-J菜单。老师辛苦了!!

jrs1a 发表于 2017-8-29 09:10:47

thank you

zhr918 发表于 2017-10-12 13:36:31

不错,支持一下!

txhzh 发表于 2017-11-24 15:39:10

不错,支持一下!

张志远 发表于 2018-12-31 12:51:54

感谢分享经验

lhp61549 发表于 2018-12-31 20:24:23

多谢楼主分享精品资源!!!

wong_rui 发表于 2019-5-2 15:00:48

谢谢分享!!!找了好久。。。
页: [1] 2 3
查看完整版本: BD-J的Scenarist工具重编译及重签名