车先知吧 关注:386贴子:9,036

【Modding Autoprophets】Project CARS 完全解包技术详解

只看楼主收藏回复

本解包技术由本人半年前首创,直接导致了PC全球首个mod——Pagani Zonda R Evolution的诞生。之后不少国外modder开始研究PC的mod,然而一个不会解包,另一个不会模型编码,无一成功。至今没有其他人能解包出PC文件的文件名。
迫于反垄断压力(其实是看在有人想学的份上才写的,这破技术没啥垄断可言),前些天写了这个教程,经过Autoprophets内测调试和改进,首度公开该PC解包教程。至于PC解包有啥用,大家自己看着办吧
1L给我大SMS


IP属地:美国1楼2015-11-08 17:59回复
    工具软件:
    QuickBMS
    Cheat Engine
    Replace Pioneer
    上述软件及其它相关脚本下载地址:http://pan.baidu.com/s/1o67uP4I


    IP属地:美国2楼2015-11-08 18:00
    回复
      详解步骤:解包实例Pakfiles\Vehicles\TC2011_GUI.bff(这个文件是早年内测版时的Audi A4DTM,现版没有,不过步骤一样不影响演示,各位可以随便找另外一个文件,理论上Pakfiles中任何一个bff文件均可(实际可能由于“pcars index replace 1.txt”内容不完善导致错误,但大部分文件经测适用))
      1. 将文件夹“QuickBMS”复制到游戏目录。在“QuickBMS”文件夹下新建文件夹“TC2011_GUI.bff”(方便起见以被解包文件名命名文件夹)。然后运行“quickbms.exe”,首先出现对话框要找到“nfsshift.bms”文件并选择,打开后再次出现对话框要选择被解包文件,找到“Pakfiles\Vehicles\TC2011_GUI.bff”,打开后再次出现对话框要选择解包文件释放目录,找到刚才建立的“TC2011_GUI.bff”文件夹并打开,然后瞬间解包完成,如图所示。


      IP属地:美国3楼2015-11-08 18:00
      回复
        值得一提的是这个“nfsshift.bms”解包脚本支持任何SMS系列游戏,如果对于Shift系列来说上述步骤就解包完成了,于是早就涌现出解包整个游戏的各种批量解包工具,Shift系列也就mod泛滥了。
        然而SMS自然不会坐视不管,在Shift 2后的Test Drive Ferrari Racing Legend和Project CARS里大力加强各种加密措施,其中包括对bff文件的加密。QuickBMS作者Aluigi认为其文件名字串编码方式过于复杂于是放弃继续研究,所以可以看到解包出来的文件名都是所谓“乱码”,而且没有文件夹树状结构。于是重点便来了,以下就是ZR独创的Project CARS解包文件批量完全重命名方法。


        IP属地:美国4楼2015-11-08 18:01
        回复
          2. 要批量重命名就要有文件名来源。显然游戏能读取bff内存中必定存在原始文件名。于是就需要Cheat Engine或其它内存查找工具来获取相关文件名了。这里以Cheat Engine为例。由于某种原因,大部分情况下文件名在内存中排列分散,要获得完整文件名列表请遵守以下步骤。
          ① 打开“Pakfiles\Vehicles”找到文件“Kart_01.bff”,重命名其为“Kart_01.bak.bff”。然后复制刚才被解包的“TC2011_GUI.bff”,并重命名其为“Kart_01.bff”放在“Pakfiles\Vehicles”下。(相当于备份Kart_01.bff然后拿要解包的文件替换之。因此解包完成后正常进行游戏时请将其还原)


          IP属地:美国5楼2015-11-08 18:01
          回复
            ② 运行游戏,进入车库,直接选择125cc Shifter Kart


            此时由于刚才替换了“Kart_01.bff”文件,游戏无法载入可能会导致卡死。请勿关闭游戏,并切换到桌面(如不方便切换可以把游戏设为窗口化),运行Cheat Engine。


            IP属地:美国6楼2015-11-08 18:02
            回复
              ③ 点左上角按钮选择进程pCARS.exe

              然后准备搜索内存,数值类型选择字串,然后文字一栏输入文件名关键字(必须小写,可以是后缀名,参考QuickBMS直接解包的文件后缀名),这里我们输入.bmt(材质后缀),然后点击首次扫描。

              此时会搜索出一大堆地址,我们需要的地址通常在最下方。


              IP属地:美国7楼2015-11-08 18:04
              回复
                于是右键点击选择“浏览相关内存区域”。

                进入内存查看器,如果看到这样连续完整的小写字串就说明地址正确了。(注意如果找不到可能是尚未载入完成,因此勿过早切换至桌面)


                IP属地:美国8楼2015-11-08 18:04
                回复
                  ④楼上的就是我们要找的文件名了,将其整段复制并粘贴到记事本中,然后保存至桌面“TC2011_GUI.txt”。操作结束后可关闭游戏和Cheat Engine。


                  IP属地:美国9楼2015-11-08 18:05
                  收起回复
                    2. 现在的文件名列表过于混乱,需要用ReplacePioneer调整格式。打开Replace Pioneer,进入“Convert\Fast Replace/Convert\--- select ---”。

                    ① 在弹出的窗口中点击“Import”,选择下载文件中的“pcars index replace.txt”,“Input File”处选择TC2011_GUI.txt,“Output File”处复制“InputFile”处的地址。点击Start运行。过程中会提醒覆盖原文件请点“Yes”。


                    IP属地:美国10楼2015-11-08 18:06
                    回复
                      ① 重复上述过程,“Import”时把“pcars index replace.txt”换成“pcars indexreplace md.txt”,同时“Output File”处把文件名改成“TC2011_GUI.bat”,点Start运行。
                      ② 将“TC2011_GUI.txt”重命名为“index.txt”,将“index.txt”和“TC2011_GUI.bat”移动到解包时创建的文件夹“TC2011_GUI”下。运行“TC2011_GUI.bat”以创建文件夹树形结构。


                      IP属地:美国11楼2015-11-08 18:07
                      回复
                        3. 现在文件名列表和文件夹树形结构准备完毕,开始进入最后重命名阶段。首先解释下“乱码”问题。引号都打了说明并不是真的乱码。其实那是各个文件在bff文件中的十六进制地址。在该解包方法中唯一的作用就是确定文件顺序。然而由于智能数字文件名排序不能识别十六进制数,排序结果是混乱的,所以现将数字全部转换为字母再根据文件名列表批量重命名。方法如下。
                        ① 再次进入Replace Pioneer,按Ctrl+B打开Batch Runner。将解包后的所有文件拖动至界面。勾选“Set output file name”,在文件名表达式一栏输入:
                        ${BASE}<scalar($&=~tr/a-f/k-p/,$&=~tr/0-9/a-j/,$&)>

                        然后点击左下方File Rename进行重命名。
                        ② 选择刚才被重命名的文件,再拖动至Batch Runner界面,在文件名表达式一栏输入:
                        #<file_line('index.txt',$match)>
                        然后点击File Rename进行重命名。


                        IP属地:美国12楼2015-11-08 18:07
                        收起回复
                          至此一个bff文件终于解包完成!文件名和文件位置均完全正确。多个bff目前没有比较好的解决方法,内存提取仍需一个个替换Kart_01.bff然后用Cheat Engine查找。只是第2步文件名列表的整理可以批量进行,有兴趣的可以自己研究。
                          程序猿的重要性此贴可以体现了,等我明年学了西加加看看能不能些个专门的程序来解决。


                          IP属地:美国13楼2015-11-08 18:09
                          回复
                            另附传送门:
                            【max脚本】SMS导入工具v3.1c升级版 经ZR增强支持VRay材质
                            http://tieba.baidu.com/p/3954398910
                            会完全解包的话导入模型就很方便了,贴图都是自动贴好。


                            IP属地:美国14楼2015-11-08 18:10
                            回复
                              围观装逼


                              IP属地:浙江来自Android客户端15楼2015-11-08 18:16
                              收起回复