喵赛克 PC 版内购破解流水账

机缘巧合下来摸黑产(不


嘛,人家总是要恰饭的。这篇文章也是笔记向的;所以相关的文件是不可能会发的,步骤也不会讲的很详细。

清明节假期的时候舍友在 Steam 看到了喵赛克出了 PC 版,作为音游爱好者第一时间就在她的电脑购买了游戏并作为礼物送给我。然而玩的时候发现诡异的手感实在有些不能接受,(或许是我本身就不太适应键盘上玩这种 osu Mania 模式一样的游戏) 就连谱面都是之前早就玩过的。 因为自己冲动走了礼物渠道肯定也是退款无门。当然这样说其实也有些过分,对比 iOS 端这里的乞丐版还是有不少谱面是 iOS 端所没有的。
于是和室友吐槽后马上开始研究怎么样去掉内购来平衡心态的事(大雾

在真的反编译前,首先当然是在网上找了移动端游戏的破解的思路,毕竟我不是很懂x86汇编的;这方面研究的人挺多的…找资料没有那么困难。如果用 Unity 反编译来当关键词搜索很大概率会看到 Mono 这个文件夹,但其实所有线索都直接指向 MUSYNX\MUSYNX_Data\Managed 这里,要动手脚的地方是在assembly_csharp.dll 这个文件中的,找到后直接 dnSpy 打开即可。

左边的窗体中可以看到这些方法名,如果你来开发这个游戏会把内购认证放在什么名字下呢

最后参考了很多资料,在 UserMemory 方法下找到 HasApurchaseld() 类 ,修改IL指令分别为 ldc.i4.1 和 ret,这样所有的内购就都属于你了;当然也可以直接右键然后编辑类,直接输入 return ture; 然后再编译,效果是一致的。

唔,ldc.i4.1 代表的是在内存堆栈中新建一个 int32 类型的值并赋初值1,ret就是返回这个值,如果是1的话就 ture 了。

然后再找到 HasApurchaseld() 类 ,做和上面一样的事情使其return ture; 就好了

最后,文件——保存模块,就好了。

使用 nginx 进行端口转发

这个应该是很简单的东西了,不过在此之前我对端口转发,反向代理之类的名词都还没什么概念呢,虽然心里有着各式各样的需求但完全不知道怎么样实现,通过最近一段时间的学习至少可以知道这些网络技术是用来解决什么样的问题的了(x

所以说什么地方才会用得到端口转发呢?大概就是在同一个 IP 上面运行了两个服务的时候吧…这样说有些难以理解。我就举个我真实情况下的例子吧:

在上面的文章里,我把路由器和 VPS 连接在了一起,但是每每想要访问路由器的 SSH 时候都得先登录进去 VPS 的 SHH,输入 root@10.0.1.2 才能继续访问路由器的 SSH,非常不方便了,如果想要直接访问到路由器的 SSH,就需要设置端口转发了。

这里端口转发使用强大的 nginx 来完成:安装和配置流程如下

apt update #更新软件源
apt install nginx #安装 nginx
nginx -t #检查一下配置文件( nginx.conf )的路径在哪

对配置文件进行编辑,添加下面的内容
stream{ }表示转发 TCP Stream,proxy_pass表示被转发的地址和端口,上面的例子中路由器的 IP 地址是 10.0.1.2,所以下面就这样填写,这样属于路由器22端口的服务就被转发到了 VPS 上的 2222 端口了。

stream {
server {
listen 2222;
proxy_pass 10.0.1.2:22;
}
}

修改后保存,然后使用
nginx -t #检查一下配置文件( nginx.conf )的语法格式是否合格
没有问题后重启 nginx,配置就生效了。

whereis nginx #确定 nginx 的位置
./nginx -s reload #重新启动 nginx

WireGuard x OpenWrt 配置笔记

目标:实现将一个拥有固定 IP 的 VPS 和一个内网环境下的 OpenWrt路由器 通过 WireGuard 建立隧道而相连,从而起到内网穿透的作用。

首先肯定得在路由器和 VPS 上分别安装 WireGuard,其中在路由器安装的过程比较波折,最后不得已从网上下载了别人编译好的包含 WireGuard 固件(为后来的折腾带来很多麻烦),而 VPS 那边就简单很多了,标准的 Debian 系统从官方便可找到完整的安装配置步骤了。

安装过程不再详细介绍,Debian 用户根据上面链接中的说明一行一行复制粘贴就可以完成安装了。至于OpenWrt端的安装也可以通过下面的命令简单完成。

在路由器上:
opkg update
opkg install luci-app-wireguard

安装后,应该要为路由器和 VPS 分别生成各自的公钥和私钥,WireGuard在建立隧道的时候需要彼此的公钥才能工作。

在两台设备都执行:
mkdir /etc/wireguard;cd /etc/wireguard(可能已经存在有这个目录,那么直接cd就可以)
wg genkey | tee privatekey | wg pubkey > publickey

这样一来公钥和私钥就生成好了,公钥用来分发给别人,私钥则应该妥善保存。 上面的工作完成后,就可以开始配置 WireGuard 了,不同的是在 OpenWrt 端 WireGuard 是有 luci 界面可供配置的,而在 Debian 端,WireGuard 只能通过 CLI 进行配置。

在路由器上:
进入 Web 管理页面,点击网络选项卡并点击接口,然后在找到下面的添加接口,点击进入。 新接口的协议应该选中 WireGuard VPN;接口的名称随意,然后新建即可。下一步开始修改这个接口的选项。

在路由器上:
cat /etc/wireguard/privatekey
然后把输出的那些字符全部复制出来粘贴到Web中的私钥框里去,监听端口可以乱乱填,这不重要。其他的按照我的填写就可以了。

在 VPS 上:
sudo nano /etc/wireguard/wg.conf
然后编辑以下内容进去并保存

[Interface]
Address = 10.0.1.1/24
PrivateKey = <在服务器使用 cat /etc/wireguard/privatekey获得 >
ListenPort = 12580

[Peer]
PublicKey = <在路由器使用 cat /etc/wireguard/publickey获得>
AllowedIPs = 10.0.1.2/24

保存后就可以使用
wg-quick up wg 来启动wg了
如果是Debian8的话,要在启动之前执行一条
apt-get install linux-headers-`uname -r`

在路由器上:
按照下图配置即可

填写完成后,保存并应用,两边的连接会立即建立。
建议把路由器上面创建好的 WireGuard 接口添加到防火墙的 lan 一侧。
之后,在路由器上可以通过管理界面的 状态——WireGuard Status 查看连接情况;在 VPS 上则可以通过 wg show 查看连接情况。