吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 24014|回复: 57
收起左侧

[调试逆向] 2019-11-18 碧蓝航线立绘的成像原理及提取技术分析

  [复制链接]
bluekiller 发表于 2019-11-18 20:59
本帖最后由 bluekiller 于 2019-11-19 08:17 编辑

碧蓝航线的立绘就个人而言,目前是国内最好的,基于安卓平台的碧蓝航线使用的是unity3d引擎。unity版本号2017.4.28f1.

逆向分析就采用近期更新中的贝尔法斯特皮肤,文件名beierfasite_4_tex。游戏加载中的显示如下:

360截图16241223103129133.png

使用自编的unity3d资源程序,lz4解压,解包获取了贝尔法斯特的mesh和texture2d贴图文件。
360截图1740120710012993.png

beierfasite_4_mesh.mesh如下
360截图168409258977109.png

从解包的texture2d图像来看,立绘貌似被切割成了许多四边形方块,打乱放置,这种加密手法还是比较新鲜的。既然从beierfasite_4_tex中解包出了texture2d和mesh,那么texture2d的还原解析数据应该和mesh有关。接下来重点就是分析mesh的16进制数据,希望从中获取蛛丝马迹。

360截图17001017100115147.png

偏移地址:
0x00 - 0x18 是mesh的文件名
0x18 -          值0x01000000 4字节,应该是vector SubMeshes的数量,LE,也就是说只有一个。
0x20 -          值0x32010000 4字节,LE,解析为三角形面f的描述数量,306(DEC)顶点,描绘1个四边形需要6个点,306/6=51。ok ,也就是说texture2d的贝尔法斯特图像被切割成了51个小块。
0x30 -          值0xCC000000 4字节,LE,解析为贴图顶点数量,204(DEC)顶点,一个小块的贴图顶点4个,那么204/4=51。ok ,与上面的分析吻合。
0x34-           值0x0000E043 4字节,BE, ,解析为Vector3f Center x 图像最宽处的宽度的/2,转 LE 0x43E00000  计算float 448。全宽就是448x2=896像素
360截图17911009598391.png
0x38-           值0x00C01744 4字节,BE, ,解析为Vector3f Center y 图像最高处的高度的/2,转 LE 0x4417C000  计算float 607。全高就是607x2=1214像素
360截图17401203101108145.png

由于是2D平面贴图,所以z向是没有的,所以都是0,这里就不写了。

360截图173705117711254.png

跳转到下面
0x70 -          值0x64020000 4字节,LE,612(dec),vector IndexBuffer items,612字节,三角形面f的数据612/6=102个面。
0x74 -  0x2D8 就是上面612字节数据。非重点,继续往下走
0x2D8- 0x308 48字节无关紧要,继续往下走

360截图17050402436941.png

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字节,完全吻合。

分析到这里,应该有个定论了,把这4080个字节转换成经典的obj格式
0x0000030C   4080 items第1个数据,           float数据组 0x0000844 BE 转 LE 0x44080000  计算float 544 V-x 顶点坐标               
0x00000310   4080 items第2个数据,           float数据组 0x0009E42 BE 转 LE 0x429E0000  计算float 79  V-y 顶点坐标  
0x00000314  4080 items第3个数据,           float数据组 0x0000000 BE 转 LE 0x00000000  计算float 0   V-z 顶点坐标  
0x00000318   4080 items第4个数据,           float数据组 0x000803A BE 转 LE 0x3A800000  计算float 0.0009765625   Vt-x 顶点坐标(贴图)
0x0000031C   4080 items第4个数据,           float数据组 0x020B13A BE 转 LE 0x3AB12000  计算float 0.001351357    Vt-y 顶点坐标(贴图)
.
.
循环51次
输出到obj格式。如下
360截图18141215143454.png 360截图1704051096140112.png

使用windows 10 自带的3dbuilder 查看一下
360截图18430706122055.png

好像有点意思了。干脆上max贴图看一下
360截图17930723574360.png

max 导出为fbx格式,使用windwos10 自带的3D 查看器观看,嘿嘿,是那么个样子

360截图17350804166829.png

ok,碧蓝航线的立绘加载原理应该就是这样了。下一步是把立绘提取出来。

beierfasite_4.png


这就是解包的贝尔法斯特的贴图,由于观看方便,解包的时候翻转了一次,现在我们把它翻回去,如下


beierfasite_4.fw翻转.fw.png


这张加密图的分辨率是1024x740


根据前面解读的全宽全高896x1214,我们新建一个画布

360截图18470124305514.png

我们看obj第一个贴图四边形数据和加密的分辨率
第1个vt坐标点:x 0.0009765625 x 1024=1 ,y 0.001351357 x 740=1
第2个vt坐标点:x 0.0009765625 x 1024=1 ,y 0.5202702 x 740=385
第3个vt坐标点:x 0.02822266 x 1024=289 ,y 0.5202702 x 740=385
第4个vt坐标点:x 0.02822266 x 1024=289 ,y 0.001351357 x 740=1

beierfasite_4.fw翻转2.fw.png

ok 第一个块的图像锁定,将这个块抠出来,贴到上面说的画布896x1214中,坐标用v顶点坐标

360截图1814122175107113.png

贴图
beierfasite_4.fw翻转3.fw.png

ok,第一个块贴好了,循环51次,完成所有贴图,自己写个程序自动贴,手工贴有点累,下图,就是自动贴顺序,贴完别忘了翻转一次,倒着看不舒服

360截图18180719117110126.png


去掉网格就是这样


360截图184307088011498.png


立绘


beierfasite_4-pic.png


到这里,碧蓝航线新皮肤贝尔法斯特立绘提取已经完成,大家有啥问题,可以跟帖探讨。至于程序工具,我是不会放的,违反版规。


over

免费评分

参与人数 25威望 +1 吾爱币 +29 热心值 +22 收起 理由
零识 + 1 + 1 用心讨论,共获提升!
千钟粟 + 1 + 1 谢谢@Thanks!
asd1591959680 + 1 + 1 用心讨论,共获提升!
niconico128 + 1 + 1 热心回复!
NeroArc + 1 + 1 用心讨论,共获提升!
w15061162462 + 1 热心回复!
LeadroyaL + 1 + 1 用心讨论,共获提升!
ysang + 1 + 1 厉害(ง •̀_•́)ง
mencvd + 1 + 1 厉害了
月落乌伤 + 1 我很赞同!
willJ + 1 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
touma1 + 1 热心回复!
ll52wj1pjo + 1 谢谢@Thanks!
deffy + 1 用心讨论,共获提升!
Omitrix + 1 我很赞同!
XY222 + 1 + 1 我很赞同!
bingshuir + 1 + 1 热心回复!
庞晓晓 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
椎名牧 + 1 + 1 谢谢@Thanks!
walkersky + 1 + 1 什么叫牛逼!
Sugwlang + 1 + 1 热心回复!
忧伤的鲍鱼 + 1 + 1 用心讨论,共获提升!
dzj0821 + 1 + 1 用心讨论,共获提升!
XavierTinkers + 1 + 1 谢谢@Thanks!
心的一半留给你 + 1 + 1 虽然不懂,但看着就挺叼

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| bluekiller 发表于 2019-11-19 10:56
破解小白2333 发表于 2019-11-19 08:34
看上去很厉害啊,崩坏3的能不能搞一下

挑战官方底线的结果就是大家没得玩
破解小白2333 发表于 2019-11-19 14:56
bluekiller 发表于 2019-11-19 10:56
挑战官方底线的结果就是大家没得玩

现在已经没得玩了,崩坏3的mod彻底凉了
巴别塔 发表于 2019-11-18 21:07
455565995 发表于 2019-11-18 21:13
牛逼,围观一下
AIctiy 发表于 2019-11-18 21:17
很好玩的游戏我玩了很久
YuLoo 发表于 2019-11-18 21:32
围观,等待下面的分析
vethenc 发表于 2019-11-18 21:58
感谢分享,强势围观
Windows10 发表于 2019-11-18 22:06
感谢分享
Wind_lc 发表于 2019-11-18 22:13
大佬属实牛逼
ARNOKITO 发表于 2019-11-18 22:13
感谢分享
阿甘阿Q 发表于 2019-11-18 22:18
感谢分享,认真学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-21 23:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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