影之诗超凡世界解包相关求教

根据SVGWBTools/Wizard2AssetsUnpacker: A cross-platform command-line tool for unpacking and decrypting asset bundles from a specific game.里面的教程,目前我已经安装好了程序,现在需要配置config.json

以下是具体内容:

{
“AssetBundleAddress”: “https://example.com/dl/assetbundles/Windows/{0}/{1}”,
“ManifestAddress”: “https://example.com/dl/manifests/Windows/{0}/assetbundle.{1}.manifest”,
“VersionAddress”: “https://example.com/version/info”,
“CommonHeader”: “your-common-header-base64”,
“RoutingHeader”: “your_routing_header_here”,
“AppVersion”: “1.0.0”,
“DeviceUUID”: “your-device-uuid”,
“MD5Salt”: “your-md5-salt”,
“AssetBundleBaseKeys”: “your-base-keys-base64”,
“Sqlite3mcKey”: “your-sqlite3mc-key-base64”,
“Sqlite3mcBaseKey”: “your-sqlite3mc-base-key-base64”,
“ClientId”: 1234567890,
“DeviceInfo”: {
“Platform”: 4,
“Device”: 3,
“DeviceName”: “Example Device Name”,
“PlatformOSVersion”: “Example OS Version”,
“GPUVendor”: “Example GPU Vendor”,
“GraphicsMemoryMB”: “8192”,
“ProcessorType”: “Example Processor”
}
}

求问各位大佬该怎么配置 :thinking:

同求

同求

我不是解包大佬但是我可以告诉你

应该去看看github上面的项目文档而不是直接来论坛问这个工具如何使用

大佬们不是AI他们不会闲的去给你 “翻译” 文档

我可以说我已经在你发的github链接中找到了如何配置这个json的方法

如果你没找到我只能说你需要先学习如何使用github 如何在github上提出问题

就像你不知道怎么使用微信然后你去问Windows的开发人员一样你应该要去找这个工具的开发者询问如何使用

还有发送 “同求” 只会起到相反作用因为没人愿意给一群没有基础的人解释一堆专业性很强的东西

我草 终于有个明白人 :sweat_smile:
我看了一下依旧可以套用公式

在你准备要通过电子邮件、新闻群组或者聊天室提出技术问题前,请先做到以下事情:

  1. 尝试在你准备提问的论坛的旧文章中搜索答案。
  2. 尝试上网搜索以找到答案。

3. 尝试阅读手册以找到答案。

4. 尝试阅读常见问题文件(FAQ)以找到答案。

  1. 尝试自己检查或试验以找到答案。
  2. 向你身边的强者朋友打听以找到答案。
  3. 如果你是程序开发者,请尝试阅读源代码以找到答案。

image

U1S1 确实是有人问过

在Readme中

也说明了不能共享这个文件

图片

应该已经能看出来这是账号配置文件吧

是我的问题太宽泛了,大部分地方我都能通过AI确定怎么填,但是对于AssetBundleBaseKeys”: “your-base-keys-base64这一栏,我不知道该怎么获取,所以询问

开发者不是写了要逆向或者动态调试吗
历史帖子不搜一下吗
有文档不看一定要用AI吗
AI又不知道那项目是干什么的又没有审计项目代码你觉得他给你的信息是可信的?这也是所有AI通病只会猜而不是告诉你无法确定

1.我没有完全明白开发者的意思,是我的问题,我认错

2.这个网站的历史帖子搜索过了,搜索词为“影之诗”,找到四个,里面最有作用的就是上面的网站,这已经能表面我搜索过,不过目前卡在了config这里

3.你说的“文档”如果是这个github链接里面的readme,那我确实没有完全领会开发者的意思,如果是其他我不曾接触过的,那对于我来说作用甚至不如AI

所以你这三个问题归根结底就是我的第一个回答


自己dump

提供一个dll用于exe启动时加载系统dll的时候劫持dll卡住主进程使用IDA 或者其他工具attach后点击确定恢复
version.zip (5.9 KB)

也做了进程名限制只作用于游戏进程

我只能帮到这至于文件长度你得自己去算他的处理代码有7000多行


反正我懒得看了一直在对一块内存进行解密或许你可以断点最后return的时候得到v3的指针和最初的指针做减法得到的偏移就是文件长度
先将version.dll丢游戏目录 这个文件是为了在加载global-metadata.dat前卡住主进程便于附加调试器

IDA解析GameAssembly.dll搜索字符串global-metadata.dat交叉引用到这个函数


我这里是v4在下面指针赋值的地方打个断点
这里如果你想研究他的长度就去上面那个函数里搜result

应该只有两个return result;
第一个return result; 附近的v3指针操作应该就是最后的v3指针那块反正我没去看卡死了7000多行IDA每次都报内存溢出

再确认打好断点后运行游戏

弹出弹窗后在ida附加到进程


附加好后点绿色三角继续运行然后点弹窗确定(附加时候会自动挂起)
image
不出意外就会在你断点的地方停下


此时的寄存器就是指向global-metadata.dat
跳转后就能看到头部8字节被抹除的global-metadata.dat

然后使用CE附加进程使用LUA

local ptr = 0x7FFC7FF95AD0  指针
local size = 0x119284C + 0X100  这里你得自己去琢磨文件长度

print(string.format("metadata addr = %X", ptr))

local magic = readInteger(ptr)
print(string.format("magic = %X", magic))

local bytes = readBytes(ptr, size, true)

local f = io.open("W:\\SteamLibrary\\steamapps\\common\\ShadowverseWB\\global-metadata.dat","wb")

for i=1,#bytes do
    f:write(string.char(bytes[i]))
end

f:close()

print("dump finished")

之后拿到global-metadata.dat对头部8字节修复

拿去用Il2CppDumper把元数据dump出来
历史帖子中至少有4位大佬解决了文件长度计算问题你可以去问问他们肯定有办法我是没办法了没见过这种塞GameAssembly里的

感谢帮助

看起来size错误应该不影响Il2CppDumper的行为,往后多dump些也无所谓。不过最新的跑Il2CppDumper 会出错了,暂时没找到原因(sad