吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2569|回复: 8
收起左侧

[会员申请] 申请会员ID:rsjw【申请通过】

[复制链接]
吾爱游客  发表于 2022-8-20 12:57

1、申请ID:rsjw
2、个人邮箱:rsj-taurus@qq.com

记对某个 Unity3D 单机游戏(安卓)的逆向破解

(游戏水平太菜了有一关打了半年硬是打不开所以就有了这些东西)

使用 APKTOOL 解包之后,在 lib/arm64-v8a 下发现了 libil2cpp.so,说明这个用了il2cpp。

![]()

用 IDA 打开之后无从下手,按照 il2cpp 的方式,需要先找到元数据 Metadata,恢复一些符号。

打开 assets\bin\Data\Managed\Metadata 目录,但是惊讶地发现只有一个 game.dat,而且不是 global-metadata.dat。而且 game.dat 在 il2cpp 里的引用也乱七八糟,于是决定直接从内存里找。global-metadata_dump 就是从内存中 DUMP metadata 的工具,原理是识别 Metadata 特殊的文件头,效果十分好。

安装 Frida 和安卓虚拟机,连接好之后使用 global-metadata_dump,得到正确的 global-metadata.dat,再使用 il2cppDumper 成功恢复 Assembly-CSharp.dll 以及一系列符号。

![]()

![]()

现在使用 DnSpy 导入 DLL:于是我们就成功的打开了逆向的大门。

初心是想研究一下存档文件,文件看上去是这样子的:

![]()

编码显然是 Base64,但是解码后乱七八糟,说明有什么特殊的编码/加密方法。

是用 UnityEngine::PlayerPrefs 生成的,于是来到这个函数,使用 jump to xref

![]()

![]()

看上去应该和 SaveManagement 有关系,

![]()

改好之后发现加密在这个函数:

![]()

![]()

反复研究之后,发现这是先都转化成 UTF-16,然后使用 C# 自带的 DESCryptoServiceProvider 加密,然后再转成 Base64 的。经过查阅资料,默认方式为 CBC,PAD 是 PAD_PKCS5。经过这一遭,我写了一个丑陋的 Python 代码。

import pyDes, base64
DES_SECRET_KEY = "????".encode("utf_16_le")
def Dec(base64_str):
    base64_str = base64_str.replace("%2B", "+")
    base64_str = base64_str.replace("%2F", "/")
    base64_str = base64_str.replace("%3D", "=")
    des_obj = pyDes.des(DES_SECRET_KEY, pyDes.CBC, DES_SECRET_KEY, padmode=pyDes.PAD_PKCS5)
    s = des_obj.decrypt(base64.b64decode(base64_str))
    return s.decode("utf-16")

def Enc(s):
    s = s.encode('utf_16_le')
    des_obj = pyDes.des(DES_SECRET_KEY, pyDes.CBC, DES_SECRET_KEY, padmode=pyDes.PAD_PKCS5)
    base64_str = base64.b64encode(des_obj.encrypt(s))
    base64_str = base64_str.decode()
    base64_str = base64_str.replace("+","%2B")
    base64_str = base64_str.replace("/","%2F")
    base64_str = base64_str.replace("=","%3D")
    return base64_str

raw = input()
print(Dec(raw))

问题就在于找到这个密码了。根据以上规则,C# 默认方式一定需要恰好4个英文字符。

![]()

刚好是四个大写字母。果然成功了。

![]()

不过改完之后立马就索然无味了。

我还有些想法,想Patch一下,放宽规则:

![]()

用这个 网站 :于是改了一个数据,重新打包签名安装之后:果然奏效了。

![]()

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

Hmily 发表于 2022-8-22 16:40
图片丢失了,Markdown格式需要单独点击MD的按钮写入,修改一下跟帖回复更新吧,另外账号自己测试好,这个账号已经被使用了。
吾爱游客  发表于 2022-8-22 19:46
放在这里了~ https://www.cnblogs.com/rsjw/p/16607345.html
PS 在学校里,回复可能稍微晚一些

点评

等有时间上线处理吧,用户名也不行。  详情 回复 发表于 2022-8-23 11:09
Hmily 发表于 2022-8-23 11:09
游客 211.140.156.x 发表于 2022-8-22 19:46
放在这里了~ https://www.cnblogs.com/rsjw/p/16607345.html
PS 在学校里,回复可能稍微晚一些

等有时间上线处理吧,用户名也不行。
吾爱游客  发表于 2022-8-23 18:06
谢谢,改成 rsjw
Hmily 发表于 2022-8-24 10:47
I D:rsjw
邮箱:rsj-taurus@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:登陆后把帖子整理一下发到移动安全区。
rsjw 发表于 2022-8-25 21:47
我来报到了
rsjw 发表于 2022-8-30 11:24
ok,已经发帖
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 01:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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