bluekiller 发表于 2019-11-19 17:56

2019-11-19 碧蓝航线立绘的修改及封包实现的论证分析

本帖最后由 bluekiller 于 2019-11-19 19:12 编辑

上一篇碧蓝航线立绘的成像原理及提取技术分析 论证了加密立绘的加载和立绘提取的可能性,今天我们来在游戏中论证修改立绘和封包的可能性。

课题:我们还是以贝尔法斯特为蓝本,进阶研究:
1.有没有可能破解加密方式,不用51一个小块,只用1个大块封包
2.有没有可能性替换其他的立绘。

课题提出的目的是因为,采用51个小块,将限制立绘的几何形状的修改,而采用大块mesh,将无限制立绘几何形状的发挥,甚至可以替换成别的立绘。当然难度增加。不尝试不知道,万一行了呢。



这张游戏贝尔法斯特的截屏,我们的目标就是实现少女前线的立绘红牡丹封包进去。下图就是少前的红牡丹


为了减少不必要的修改,我们采用贝尔法斯特的画布896x1214,通过ps将贝尔法斯特替换为红牡丹。这样做得好处就是mesh中的许多参数的修改可以跳过了。

下面beierfasite_4.mesh.mesh就是根据上一篇的mesh结构分析mod的


由于采用贝尔法斯特原先mesh结构,大大简化了修改工作量
原来:
0x20 -          值0x32010000 4字节,LE,解析为三角形面f的描述数量,306(DEC)顶点,描绘1个四边形需要6个点,306/6=51。ok ,也就是说texture2d的贝尔法斯特图像被切割成了51块
mod:         修改为0x06000000,因为原来是51个块306,那么1个块就是6.

原来:
0x30 -          值0xCC000000 4字节,LE,解析为贴图顶点数量,204(DEC)顶点,一个小块的贴图顶点4个,那么204/4=51。
mod:         修改为0x04000000,因为原来是51个块204,那么1个块就是4.

原来:
0x70 -          值0x64020000 4字节,LE,612(dec),vector IndexBuffer items,612字节,三角形面f的数据612/6=102个面。
mod:         修改为0x0C000000,因为原来是51个块612,那么1个块就是12.我们只要复制原来612字节的前12字节就ok了,其他的删除。记住地址偏移上移了600字节

原来:
0x00000308 值0xFF0F0000,4字节,LE,4080 (DEC),4080 items,4080字节,这里就是mesh的重点数据区描述,
0x0000030C -                         4080字节的开始偏移地址。20个字节描述5个顶点数据,前12字节是一个v顶点坐标(x、y、z),后8字节是vt贴图顶点坐标(x、y)。一个四边形4个v顶点坐标,12x4=48字节,48x51=2448字节,一个四边形4个vt贴图顶点坐标,8x4=32字节,32x51=1632字节,1632+2448=4080字节,完全吻合。
mod:      
0xB0000000 修改为0x50000000,因为原来是51个块4080,那么1个块就是4080/51=80,删除原先4080后面的4000字节,好,这80字节就是一个快的4个v顶点坐标和vt顶点坐标
格式:20字节,v(x、y、z)12字节 + vt(x、y)8字节 每4字节计算dec的float写入
第1组:0x00B4-0x00C8v(x、y、z)12字节 + vt(x、y)8字节 =(000)            + ( 00)
第2组:0x00C8-0x00DCv(x、y、z)12字节 + vt(x、y)8字节 =(012140)   + ( 01)
第3组:0x00DC-0x00F0v(x、y、z)12字节 + vt(x、y)8字节 =(89612140)+ ( 11)
第4组:0x00F0-0x0104v(x、y、z)12字节 + vt(x、y)8字节 =(89600)         + ( 10)

下图方便理解



ok,mesh改造完成。

验证一下,输出到obj格式



ok,没有错误,导入MAX并贴图



ok,正确

另存为fbx,再看一下


没有毛病

最后的工作,封包入源文件beierfasite_4_tex.unity3d,替换掉原来的包文件mesh和texture2d
用lz4压缩算法压缩。
将最终mod的beierfasite_4_tex文件丢手机内存碧蓝航线热更目录的Painting目录,覆盖原文件。

================
启动游戏,看看贝尔法斯特wife



卧槽,这也行。{:1_918:}

就此,论证修改立绘和封包的可行性。

over


bluekiller 发表于 2019-11-20 08:05

corbell 发表于 2019-11-20 08:03
这意思是将游戏内的人物 “扣”出来?是吧?

不是这个意思,游戏立绘被事先加密分割了,这操作只是还原

天真同学 发表于 2019-11-21 21:55

bluekiller 发表于 2019-11-21 21:52
图都解密了,要啥代码?

{:301_998:}有代码可以改SC达到替换SC用指定皮肤的效果。。。。

1330134210 发表于 2019-11-19 18:26

小白顶贴

zxbbzxzx 发表于 2019-11-19 18:49

看到标题进来了,虽然不是很明白顶帖

Ch1valry 发表于 2019-11-19 18:54

大佬牛逼

Kyaru 发表于 2019-11-19 19:06

虽然不是很懂,但是会不会被查啊

bluekiller 发表于 2019-11-19 19:13

Kyaru 发表于 2019-11-19 19:06
虽然不是很懂,但是会不会被查啊

仅限技术探讨

okita 发表于 2019-11-19 19:51

大佬 会sc的修改吗

bluekiller 发表于 2019-11-19 19:55

okita 发表于 2019-11-19 19:51
大佬 会sc的修改吗

听不懂你说啥

sanshui332 发表于 2019-11-19 20:11

好像很厉害的样子~~

幸运合成器 发表于 2019-11-19 20:12

大佬,看你id十分的眼熟,我是从碧蓝航线r贴吧跟过来的,用过你的合成工具{:1_927:}
页: [1] 2 3
查看完整版本: 2019-11-19 碧蓝航线立绘的修改及封包实现的论证分析