上古卷轴 SKSE BSA文件加密插件

 

 

作者:五块半

 

特别感谢:

阳光整合

旋旋整合

小原子

乜璇璇

--------提出的宝贵意见。

小原子

亡灵.

南雀一梦

小刀砍不动

--------帮忙测试,辛苦了!

       这是 SKSE的一个插件,可以安装到上古卷轴天际模组中,无需特意安装它,SKSE脚本扩展组件就会自动载入它。

       使用它的脚手架可以加密的BSA文件,当游戏启动(出现游戏公司Bethesda Game图标之前)被加密的BSA文件在。

       内存中被重新还原.以此达到保护BSA文件内的资源不被抽取。

       补充:2.0 NPlugin32/64 已经支持游戏运行时的文件随机读写,并且不会占用多的内存

 

[兼容性]

 

       1.你需要管理员权限,对没错就是Administrator,最廉价的获得方式就是以管理方式运行。

       2.NPlugin64对应SKSE64位各版本(包括最新的),它不兼容32位程序。NPlugin32.dll对应SKSE32位的各版本,对应传奇版需要NPlugin32.dll,重制版需要NPlugin64.dll

       3.SKSE插件和游戏管理器无关,取决你是否通过skse_loader.exe启动游戏。     

       4.使用CK加载SKSE的时候NPlugin不会启动,这意味着,BSA文件不能被还原.游戏进程可能会被挂起(卡住)

       5.你需要关闭某些类似于360安全卫士的进程拦截程序,因为SKSE插件使用了一些技术手段会被误报。

       6.需要.NET Framework 4.5.2以上支持,后面会提到。

       7.你的BSA文件扩展名必须小写,且不支持BSA单文件大于2G

       8.MO管理器版本小于2.0的可能不兼容,导致内存错误,实测1.3.x的管理器无法使用

[安装]

       1.Mod Organizer:

              当你使用Mo管理你的模组的时候(适合整合包作者),这些模组应该位于Mods目录下,SKSE 插件的dll应位于:

              Mo\mods\你的插件文件夹\skse\plugins\NPlugin64/32.dll          

              如果你是个插件创作者,你也可以将他集成到你的插件中, SKSE 插件的NPlugin64/32.dll应位于:

              你的插件文件夹\skse\plugins\NPlugin64/32.dll            

       2.不使用管理器:

              如果你不使用游戏管理,直接启动skse_loader.exe,那么SKSE 插件的NPlugin64/32.dll应位于:

              游戏目录\Data\skse\plugins\NPlugin64/32.dll

[脚手架]

       脚手架工具共分2,32位和64,使用哪种取决于选择的游戏平台

       FreeBSATools.exe 是免授权加密工具,此工具3264位通用

K`X}[A2E88){AWYF`OJ{QAK

用来生成免授权加密模块sbd(Safe Binary Data)文件,执行加密插件会在BSA文件的下生成

被加密的BSA文件/skse/plugins/sbd/XXXXXX.sbd文件

 

SNBSATools.exe 是授权加密工具,此工具3264位通用

用来生成授权加密模块rbd(Registry Binary Data)文件,创建密钥,

执行加密插件会在密钥文件同目录生成授权加密文件*.rbd

 

Client32/64.exe 是客户注册工具,传奇版,辐射3使用Client32.exe 重制版,辐射4使用Client64

]%9BE3XAXG}EAXSCJGYAQ16

选择rbd文件的目录,(自动枚举此目录下所有rbd文件),输入注册码,注册工具注册目录下所有和注册码匹配rbd文件到客户注册表中

 

[更新]    

       所有脚手架工具都自带一个更新程序update,工具启动后会释到临时文件,并启动它,到我的主页http://5499ok.com站点检查最新的版本。

如果你有网络的话,工具会自动更新到最新的版本。你无需再次下载,这个动作可能引起类似360安全卫士的监视软件的拦截,请将脚手架程序加入到白名单中或干脆关闭360安全卫士。

      

[使用]

       1.免授权模式

              如果你是模组的作者,你一定对有人白票你的劳动成果感到苦恼.但我们本着开放的态度,饭可以免费吃,但不要把电饭锅带走的精神,保护版权同时又可以免费使用原则:

              现在你可以将不想让别人拷贝的资料,例如剧情脚本、贴图、头膜和其他素材使用打包到BSA文件,用脚手架(FreeBSATools.exe)进行加密。加密后他会生成一个补丁文件,后缀是*.sbd,位于:

              BSA文件所在目录\skse\plugins\sbd\BSA文件名称.sbd

              还记dll的安装位置吗?复习一下,这里*.dll应该在

              BSA文件所在目录\skse\plugins\NPlugin64/32.dll

              如果你没有管理器:

                     游戏目录\Data\BSA文件名称.bsa

                     游戏目录\Data\skse\plugins\NPlugin64/32.dll

                     游戏目录\Data\skse\plugins\sbd\BSA文件名称.sbd

             

                     进入游戏和平常没有什么不同,试用BSA提取工具打开BSA文件,会失败!

              你的BSA文件中的素材被保护了.这不影响你作品的传播,任何人可以拷贝并且使用它.但无法提取BSA中的文件.FreeBSATools写入了一个唯一随机序列号到SBDBSA文件中,就像身份证号,使得2个文件相匹配。

              所以使用RBD文件中并不依赖文件名字, RBD文件名字可以改成任意名称(尽量避免和别人重名,对于重名的文件Mo管理会存在排序和覆盖问题),因此当你对同一个BSA加密时,每次生成的SBD文件和BSA文件配对使用。

             

       2.授权注册模式

              如果你希望出售你的插件,那么你需要给客户授权(注册码),而客户需要输入注册码,并将BSA文件在还原前确认客户已注册了这个插件,否则cpluin64/32插件会跳过这个BSA文件,那么进入游戏后就能确定会发生什么情况了。

             

              Client.exe-客户注册工具

              SNBSATools.exe-加密工具

             

3.加密工具SNBSATools:

       CDKEY文件:

              要进行授权加密,你需要先创建一个密钥,保存到文件*.cdkey.每个CDKEY会生成一套独有的注册码,他的格式类似XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX,不分大小写,数量几乎没有上限.

注册码的算法是CDKEYMD5枚举数,后面RBD文件注册的时候会去推算这个注册码,CDKEY文件和RBD文件是一对,就像一把钥匙开一把锁.CDKEY加密的插件都可以使用可推算成功的注册码,注册到客户机器上,这点请牢记。

              如果你不知道CDKEY就无法推算出注册码,所以CDKEY文件要妥善保存.并记清那些加密的插件使用了,这个CDKEY

       RBD文件:

              RBD文件是一个安装包,跟位置无关,他提供了客户注册工具client需要的数据,使注册工具可以把数据注册到授权客户的注册表中,放哪都可以,也可以改名字,RBD是经过AES加密过的,如果你不知道密钥,

你无法解算它。暴力破解比直接绑架管理员问密码难多了。敲黑白,注意了下面是重点:在SNBSATools中选择一个目录(建议直接粘贴地址),SNBSATools会枚举这个目录下所有的BSA文件,

如果发现BSA没有被加密,就会加入到列表中.执行加密插件按钮,SNBSATools会加密所有在左侧列表中的BSA文件(别说我没提醒你,如果你没做备份,这个过程无法还原),

会在密钥文件CDKEY目录下生成一个同名的*.rbd文件。   

       4.客户注册工具client         

              由于小原子的强烈要求,我修改了注册工具(我更倾向与只提供具体的rbd文件),现在你必须提供*.rbd的目录,注册工具client会搜索这个目录下的,所有RBD文件,所以建议这个目录别太深了,不然会卡界面

              提供给注册工具Client注册码,我前面提到了,他会推算注册码是否属于CDKEY,如果相等,会将本机硬件特征码(涉及CPU和主板)绑定到这个注册码上,将注册数据写到客户注册表中以下位置:

支持64位的系统:

32位注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Plugin32

64位注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Plugin64

喜欢动手的朋友可以写个管理工具

       5.关于机一码

              由于需要在服务器上储存注册码和机器码,所以只提供生成5个注册码免费测试.如果需要更多绑定,请赞助我的服务器。或者你自己搞个服务器,找我写一套脚手架,这样你就有专属验证系统了

如果没有服务器则无法实现机一码的绑定。空谈算法毫无意义。注册绑定的定义是,你不能在别的机器上使用这个注册码,来注册RBD文件了.但依然可以在本机使用已绑定的注册码来注册rbd文件。

             

[疑难解答/常见问题]

       a.编码问题

              由于众所周知的问题,Bethesda GameSKSE的作者都是用的英文系统,所以他们的程序都不支持Unicode字符编码,所以需要特别注意sbd文件不能用中文名。否则不知道会发生什么错误

 

       b.工具无法启动

              *需要使用管理员权限               

              *.NET Framework版本低,如果你是Win7 sp1 64/32位的,你需要升级,因为win7默认自带的.NET Framework 4.0.0,你需要升级4.5.2,建议直接安装4.6以上版本越高越好,因为4.54.5.2是不同的.

如果你是win10 如果1800+版本,应该已经是.NET Framework 5,基本上可以忽略这个问题了。需要最少安装不低于 .NET Framework 4.5.2

              可以在开始菜单->运行->cmd.exe

              输入dotnet --version 查看本机安装的版本号,如果低于4.5.2请升级.NET Framework

 

c.游戏无法启动或跳出

              这个问题比较复杂,具体表现就是,通过skse_loader.exe启动后,游戏进程挂起.直接结束或者过一会就结束了。

              如果你加载插件模组里有加密的BSA,加载NPlugin64/32.dll会跳出.所以为了保证加密了Bsa的插件模组加载NPlugin64/32.dll插件,为了避免错误,推荐将NPlugin64/32.dll放在每个加密的插件的目录内:

              加密BSA文件所在目录\skse\plugins\NPlugin64/32.dll 以免遗忘了.

先看下SKSE的日志,确认插件工作是正常的,不管32位还是64位都在:

              <My Documents>\My Games\Skyrim\SKSE\NPlugin64/32.log

找到NPlugin64/32.log 文件查看日志信息。

                           

              Load Package Count:XXX    表示插件一共加载了多少个插件解密模块

              HOOK_SUCCESS:OK           表示插件工作正常

                           

              如果插件是正常的,与插件无关。                          

              *检查sbd文件是否丢失了,导致有加密的bsa文件,没有补丁无法还原。          

              *检查有加密的BSA文件,没有被注册,却被加载到Mo中了,原则上插件会跳过这个BSA,   但系统依然会加载它的esp和相关依赖,当游戏里读到这个空的Bsa的时候就会跳出。

       d.亡灵冥月遇到的故障       

              无法运行任何脚手架程序,启动游戏就崩溃

              WMI是英文Windows Management Instrumentation的简写,通过使用WMI,我们可以获取本地或远程服务器的性能参数和进程运行情况,以及大部分硬件信息,但前提是运行的用户要有足够的权限,administrator组用户等。

这也是做负载均衡所需要且比较方便快捷的途径。

              wmi系统服务文件被篡改,这是一种叫做wmi劫持的流氓软件造成的,它会替换wmi服务的系统文件,

劫持浏览器起始页,始你的浏览器起始页始终指向指定的网址.

解决方法:

1、右击我的电脑,选择管理菜单,依次定位到计算机管理(本地)→服务和应用程序服务项,在右边窗口中找到“Windows Management Instrumentation”一项,双击打开,在弹出的窗口中单击停止按钮。

2、进入本地磁盘的C:Windows\System32\Wbem\Repository目录,删除该目录下的所有文件后,重新启动计算机。登录后,系统会重新在该目录拷贝建立所需要的文件,并且自动启动刚才停止的WMI服务

这样恶意软件就被清除了

 

 [关于日志]

              skse插件加载日志位于<我的文档>\My Games\Skyrim Special Edition\SKSE\skse.log

              查找

checking plugin F:\XXXX\Skyrim\Data\SKSE\Plugins\NPlugin32/64.dll   skse检测到NPlugin32/64.dll插件

可能会有如下结果:

例如:plugin F:\XXXX\Skyrim\Data\SKSE\Plugins\\NPlugin32.dll (00000001 NPlugin32 00000002) loaded correctly  翻译过来就是 1NPlugin32.dll 版本2.0 正确加载

例如:plugin F:\XXXX\Skyrim\Data\SKSE\Plugins\\NPlugin32.dll (00000001 NPlugin32 00000002) reported as incompatible during query 翻译过来就是 1NPlugin32.dll 版本2.0 不兼容,CK模式会显示这样的信息

例如:plugin F:\XXXX\Skyrim\Data\SKSE\Plugins\\NPlugin32.dll (00000001 NPlugin32 00000002) disabled, fatal error occurred while querying plugin

内存溢出或内存没有对齐, 这主要是因为EXCEPTION_EXECUTE_HANDLER 异常导致的

64位的日志文件位于:<我的文档>\My Games\Skyrim Special Edition\SKSE\NPlugin64.log

32位的日志文件位于: <我的文档>\My Games\Skyrim Special Edition\SKSE\NPlugin32.log

词条解释:

       NPlugin64/32:OK  插件加载开始

       add sbd:Alternate Start - Live Another Life.bsa  添加了免授权模式 加密过的 Alternate Start - Live Another Life.bsa 的解密模块。

add rbd:Alternate Start - Live Another Life.bsa  添加了授权模式 加密过的 Alternate Start - Live Another Life.bsa 的解密模块。

Load Package Count:1  总共加载了 1个解密包

Unregistered Plugin: Alternate Start - Live Another Life.bsa 未注册的加密Alternate Start - Live Another Life.bsa文件。

HOOK_SUCCESS:Invalid! 插件无需加载  Load Package Count:0的时候发生,没有负载插件自动卸载释放资源。

HOOK_SUCCESS:OK! 插件加载成功!

 

[提出意见]

       一个人考虑问题难免有不周全的地方,以上也是朋友们不断斧正的结果。希望用到的朋友多提宝贵意见。

       你加我QQ我可能看不到

请发邮件给我623237824@qq.comsystem@songrongtop.cn