• Live2DViewerEX 创意工坊文件解密


    Live2DViewerEX 创意工坊文件解密

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

    最近换了系统,而\(Live2DViewerEx\)是无法再\(linux\)上运行的,\(steam play\)也是不支持的,\(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\)转为符合\(CLI\)\(CIL\)(\(Common Intermediate Language\)),并且主要的Code会编译在Assembly-CSharp.dll里面,然后再有mono来加载,解析,执行。

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

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

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

    那就走另一条路,修复的mono.dll,于是还需要\(dnSpy-Unity-mono\)。照着文档就行了。

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

    调试程序

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

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

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

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

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

    bin文件改名

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

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

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

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

  • 相关阅读:
    java:transient是什么,有什么作用
    如何阅读java源码
    java里面list是引用的好例子
    sort给文件按照大小排序
    HBase的rowkey排序和scan输出顺序
    记录一次事故——idea,sbt,scala
    一个简单的synchronized多线程问题、梳理与思考
    Android TextView文字描边的实现!!
    android中include标签的使用
    layout_weight 的解释及使用
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/16291513.html
Copyright © 2020-2023  润新知