提取码是多少呢
提取码:sAqo 这网页怎么给我吃了
更新4: 其实global-metadata.dat就是放在GameAssembly里, 只是读取的时候xor了一个key, 还把sanity和version改掉了.
il2cpp_init逻辑没变, 但是函数名混淆了, 找global-metadata.dat这个字符串可以找到initializeMetadata (不知道为啥第一次ghidra没给我找到这个字符串… 也可以找mscorlib.dll). 下断点后, x64dbg没有插件, 手动算下total size, 直接savedata filename,[rax],size+0x100. 最后需要前八个字节改回AF 1B B1 FA 1D 00 00 00.
IL2CppDumper可以直接导出, 不需要找key, 就是ghidra读到现在还没分析完 (
分析完了,跟上面贴的Github一样,看AssetBundleStream ctor/Read方法就行。baseKey可以下断点拿到,asset key看传参
def calc_key(base_key, asset_key):
buffer = [0] * (len(base_key) * len(asset_key))
base_idx = 0
for i in range(len(base_key)):
for j in range(len(asset_key)):
buffer[i * len(asset_key) + j] = base_key[i] ^ asset_key[j]
return bytes(buffer)
def decrypt(content, key):
offset = 0x100
output = [0] * len(content)
output[0:offset] = content[0:offset]
for i in range(offset, len(content), len(key)):
for j in range(len(key)):
if offset >= len(content):
break
key_idx = offset % len(key)
output[offset] = content[offset] ^ key[key_idx]
offset += 1
return bytes(output)
一个未知问题就是,本地有没有存每个asset的key 这样就不用调cygames api拿key了
安卓还是没法下hook目前不知道咋解决,倒是global-metadata没加密
github那个有没有人试一下国服的,对应的是抓包的哪些项?国服的多了一些主战者
更新5:
通过下断点得到,两个数据库文件,mastermemory隐藏在某个dat里,以及assetbundle manifest的地址(CDN相关)。可以直接GET拿到。
拿到assetbundle manifest,可以用上面github里的读assetbundle的代码解包以下,出来一个json里面就是对应的文件名和key了。
皮肤在Prefabs/LeaderSki/下面,Spine 4.2直接读就行 (这个JP/US skin有点神秘, 难绷的是只有动画的时候会长出腿)
以及我一直很好奇的一件事情,原主站者到底有没改东西。看了下xcw,感觉就重新打了下包,spine4.2导入导出下原来spine3.8的文件
要抓包填,或者按照上面的方法暴力解
更新6:
尝试抓了一下Steam端的包:
首先流量不走代理得force proxy,
Proxifier + Charles发现API还有SSL Pinning, 难搞
不知道安卓包能不能frida hook掉SSL Pinning, 感觉Steam端还不如手动dump了
安卓上frida直接崩,没有root检测但是justtrustme干不掉ssl pinning
CommonHeader and AssetBundleBaseKeys are static byte arrays (base64 encoded in Config.json), MD5Salt is a static string, they can be obtained by memory dump or static analysis.
CommonHeader AssetBundleBaseKeys MD5Salt,这三项应该怎么找,不会是每个人的都不同的吧
更新7:
一个暴力解决SSL Pinning的办法:
今天才知道Cy在.NET领域属于超级大神,HTTP/2库也开源了。查看源代码可以发现这里skip_certificate_verification 控制是否启用SSL Pinning。
解法就是,已知Rust niche optimization会把Option = None优化成0x2, Some(True)优化成0x1
下断点把这个instruction改成mov 0x1,即可绕过SSL Pinning (沾点赌Rust重排struct结构的成分)
然后Proxifier+Charles可以抓到包,虽然不知道CommonHeader是不是request里相同的那一段,也不太清楚UUID怎么拿(
大佬加油,我尽力看了你的发言,但没接触过是真看不懂,只能拜托你了
你好请教以下我目前应该是已经逆向出了CDN的地址,但是结合GitHub库中的地址暗示我似乎还需要输入正确的version才能获取到manifest文件?但是要拿到version info的话就要后面一大串的抓包headers实在不想搞,看到你这边manifest似乎是在抓包update前更新的。想请教一下单纯拿manifest的话需要那些headers嘛,以及完整的地址是否也可以断点搞出来。
assetbundle那个CDN地址你可以要么下个断点拿, 或者直接抓包拿, 只需要重新下载一次资源. 断点位置合适的话就是一次拿出来的. 然后地址里面就有Version
github的很多header都是为了调Version API才需要的
成了,之前的断点其实就有但是没注意到,感谢解答
佬能不能看看这游戏移动端是不是还是降了分辨率?我总觉得平板看起来很糊
有什么办法像一代那样把降分辨率相关的部分干掉?
UUID我也没在Request里找到,但是和common header一样下断点搞到了,然后我发现common header每个版本也会变。所以基本上没办法在不碰游戏的情况下拿到新版manifest了看来。
(帖子已被作者删除)