Typesetting math: 100%
There i|

洛绫璃

园龄:6年2个月粉丝:72关注:2

Live2DViewerEX 创意工坊文件解密

Live2DViewerEX 创意工坊文件解密

声明:
      本文只是讨论解密 wpk、lpk文件。本人不会提供任何程序,只是经验分享。
      如有侵权,联系删除。

最近换了系统,而Live2DViewerEx是无法再linux上运行的,steamplay也是不支持的,wine也没能运行成功,

ztO如有它法,敬请告知Orz

没有办法,从github上找到了ppet这个软件,倒是可以支持,但是需要原始的模型文件,于是便开启了解密之旅。

本文是基Live2DViewerEX 创意工坊lpk文件分析 – 动态调试Unity程序一文。

WPK

这文件很简单就是一个zip压缩,解压即可,会得到,形如下的文件

file
┠**.lpk
┠**.png
┗config.json

LPK

这个文件本身也是一个zip压缩包,解压之后会有两个无后缀文件、一堆后缀为(bin/bin3)的文件

其中较小的无后缀文件也是个json文件,另一个无后缀文件则是上一层中的那张图片

bin/bin3 的区别无非是 moc/moc3 猜也能猜到,后续也能在反编译的代码中找到相关代码

反编译

至此,已经无法再进一步获得信息了,开始反编译

dnSpy

dnSpy 是一个非常好用的调试c#的程序,可以照着仓库去编译安装,也可以直接去找现成的使用

修复mono.dll

Unity程序为了防止别人通过反编译来破解修改自己的游戏项目。可以通过两种比较成熟的方案来预防。一种是混淆,另一种就是加密(加壳)。

Unity通过Mono来达到跨平台的效果。在Build编译时会将你编写的code转为符合CLICIL(CommonIntermediateLanguage),并且主要的Code会编译在Assembly-CSharp.dll里面,然后再有mono来加载,解析,执行。

很多有安全意识的游戏都会自己修改mono源码的mono_image_open_from_data_with_name函数,对DLL脚本进行加密。

不过这种的加密方式缺点比较明显。会在加载前进行一次性解密,游戏运行过程中,内存中存在解密后完整的dLL

以上来源网络,本人并不会unity,对于这个项目,也挺大的,去提取每个dll也很麻烦 其实是我不会

那就走另一条路,修复的mono.dll,于是还需要dnSpyUnitymono。照着文档就行了。

最后用Visual Studio编译(最好用2019,高版本有适配的问题),配置是Release,平台是x86。用编译好的mono2.0bdwgc.dll替换你需要调试的Live2DViewerEX里程序的mono就行(有两个,你调试哪个exe就替换哪个)

调试程序

为了能够更仔细的观察过程,选择自己上传打包自己的模型,这样能仔细观察,程序是怎么把模型打包成wpk的,所以选则调试exstudio.exe

至于怎么调试,阅读相关代码就不说了

这里只提供个找代码的好方法,dnSpy他只能搜函数,可以把代码反编译导出来,用其他的idea(本人用的vsc),就可以搜字符串了,

再在dnSpy里把你怀疑的代码打上断点即可

最后用自己熟悉的语言写个解密脚本就行了

bin文件改名

这就非常遗憾了,明眼也能猜七八,文件名明显是md5,但有和直接md5不同,经过查看代码,发现是先处理后md5

言而总之,文件名恢复是不可逆的,

只能通过文件的前1024个字节或mode.json去判断文件的类型了,命名就看自己习惯了,挺难受的

写了半天的通过mode.json改名,结果不同的模型的配置文件差挺大的,有的在一级有的在二级,老费劲了

本文作者:洛绫璃

本文链接:https://www.cnblogs.com/2aptx4869/p/16291513.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   洛绫璃  阅读(8196)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起