TC Games 投屏软件逆向破解

查看 254|回复 10
作者:caoyuze   
一、前言
DNF手游出了有将近1个月了,以前没玩过端游,所以就体验了一下,感觉还可以(虽然还有一些小bug,还有高帧率竟然才60)。但是手机操作感觉有一点不舒服,方向不太灵活,想着用电脑模玩应该会舒服一些,于是想试一下模拟器,但是用MuMu模拟器试了一下会封号,于是,想起来以前玩手游吃鸡用过TC Games这个软件,它是将手机屏幕的游戏内容投屏到电脑,然后再按键映射操作的,就检测不到使用模拟器,所以准备试一下这个软件。后来又试了OurPlay模拟器(这个竟然不封号)以及无界趣连(和TC Games类似,但功能少很多,应该是刚出不久)也可以使用,这就是后话了。但是呢,TC Games没有VIP很多功能不能用,画质也很低,所以之后就想逆向解锁一下VIP的功能。
二、分析和爆破
1. 查壳
我们先查一下壳:


1.png (32.76 KB, 下载次数: 0)
下载附件
1
2024-6-18 15:47 上传

看到是用C#写的,没有壳,这就很好办了,我们直接上dnSpy静态分析源码。
2. 分析
(1)这里我们从设置页面入手,从设置里面,我们随便点个VIP的功能,看它的提示如下:


2.png (56.9 KB, 下载次数: 0)
下载附件
2
2024-6-18 15:47 上传

(2)在dnSpy里面我们查找设置界面的相关代码:


3.png (169.97 KB, 下载次数: 0)
下载附件
3
2024-6-18 15:47 上传

(3)这里,我们看到TCGames.Settings命名空间里面的前2个类是和设置相关的,查看里面的具体方法:


4.png (77.92 KB, 下载次数: 0)
下载附件
4
2024-6-18 15:47 上传



5.png (43 KB, 下载次数: 0)
下载附件
5
2024-6-18 15:48 上传

这样就很明显了,CastingSettings类就是投屏相关设置,ClientSettings就是客户端的一些其他设置。
(4)这里我们看到他们都有StatusOfVip方法,明显就是判断Vip的相关内容,我们直接进去看看具体逻辑,先看CastingSettings中的StatusOfVip方法:


6.png (231.96 KB, 下载次数: 0)
下载附件
6
2024-6-18 15:48 上传

这里没有看到关键信息,主要是来判断设备是否连接的逻辑,然后传入的是否是vip的参数也没用到。
3. 关键信息
(1)接着看ClientSettings中的:


7.png (62.54 KB, 下载次数: 0)
下载附件
7
2024-6-18 15:48 上传

我们看到了一些关键信息,有this.IsVip被赋值为了传入的vip参数,既然这里有IsVip字段记录是否为VIP的信息,那么一定有别的地方的方法用来返回是否是vip以及vip状态相关的方法。
(2)接下来,我们直接全局搜索IsVip相关的方法:


8.png (245.27 KB, 下载次数: 0)
下载附件
8
2024-6-18 15:48 上传

芜湖,直接找到了判断是否是Vip的方法,我们来看看这3个方法,到这里我们最快的方法就是直接让这3个方法返回true即可。
4. 修改
(1)如下图,直接在方法上右键编辑方法,


9.png (47.45 KB, 下载次数: 0)
下载附件
9
2024-6-18 15:48 上传

然后直接把整个方法体改成return true即可,修改完点编译,最后全部改完在dnSpy中点文件->全部保存即完成了程序的爆破。
(2)修改完成后我们打开修改后的软件,可以看到:


10.png (139.23 KB, 下载次数: 0)
下载附件
10
2024-6-18 15:48 上传



11.png (90.75 KB, 下载次数: 0)
下载附件
11
2024-6-18 15:48 上传

需要VIP才能用的画质设置可以使用了,然后其他的VIP键位、传音等功能也能够使用了,软件主界面左下角也有了VIP的图标(界面的主页的账户信息不用管,那个是网页查看的账户信息,不影响软件的VIP功能)。
(3)经过测试,在游戏中智能施法等VIP按键功能也能够正常使用,然后试了一下,我们的VIP键位还可以右键分享,分享出来的也是VIP键位,这个功能肯定没做服务器校验,直接能分享:


12.png (104.98 KB, 下载次数: 0)
下载附件
12
2024-6-18 15:48 上传

至此,如果想用它的VIP功能,我们要做的已经完成了。
三、再深入一些?
1. 上传功能
(1)我们本地的键位虽然能够用VIP的功能,但是,如果卸载的话,下次安装键位就没有了,我们看到它还有上传键位的功能,如果它这个功能只做本地的VIP校验的话岂不是可以让我们普通用户也上传?于是心动不如行动,我们用爆破后的程序,右键我们自己本地的键位点击上传:


13.png (25.96 KB, 下载次数: 0)
下载附件
13
2024-6-18 15:48 上传

嗯,不出意外地失败了。
(2)我们再在dnSpy里面全局搜索一下提示信息:


14.png (12.88 KB, 下载次数: 0)
下载附件
14
2024-6-18 15:49 上传

芜湖,啥也没有,那说明八成应该不是本地判断的,应该是凉凉了。
(3)既然它是上传的配置,应该有相关的服务器请求,这里我们直接用WireShark进行分析:


15.png (118.71 KB, 下载次数: 0)
下载附件
15
2024-6-18 15:49 上传

经过筛选,我们找到上传键位的接口是:http://www.tcgames.com.cn/api.ScripteInfo ,请求体内容如上,上传接口调用后,我们得到的返回结果是下面的json,这里的message字段内容果然就是我们上传失败的信息提示框内容。而且,它是直接把键位的配置详细内容直接放在请求体内请求接口了,服务器通过用户手机号字段判断你是不是VIP,如果是,就把脚本详细内容的字段的信息放到服务器上,这样,我们就无法实现普通用户的上传键位的功能了,这种做法很暴力但很有效(但是他们真不怕键位的配置文件内容很多吗,配置文件内容过多的话超过POST请求体的大小就会请求失败了,不过一般来说超不了)。
(4)如果说它是本地进行Vip校验之后,通过了再调用文件上传接口上传配置文件的话,我们就有机可乘了,这种逻辑流程也是更为通用但不安全的开发思路。
2. 加密相关
(1)之前的IsVip方法的加密校验我们也可以大致看一下:


16.png (50.07 KB, 下载次数: 0)
下载附件
16
2024-6-18 15:49 上传

这里,是用了它自己写的DES工具类的加密方法,具体加密流程以及密钥我们不用管,它这里拿到IsSvip字段后进行加密,如果值为"0P5RbaZ9ml8="或者"wVp/KEYnVKg="就返回真。
(2)我们来看一下它们解密后是什么,看到DesUtil中也有Decrypt解密方法,我们直接打印一下这两个字符串解密后的值即可(dnSpy的断点调试好像有问题,所以这里我直接用MessageBox输出查看一下),最后得出结果如下:


23.png (19.38 KB, 下载次数: 0)
下载附件
17
2024-6-18 16:53 上传



18.png (11.3 KB, 下载次数: 0)
下载附件
18
2024-6-18 15:49 上传

这里我们看到它的VIP状态标识字段有1和2两种值,经过测试,这两种VIP没发现什么区别(可能为了以后做差异化?)。到此,对此软件的研究也就结束了,大家有兴趣的话可以再深入了解一些。
四、总结
解锁VIP功能需要修改的2处:TCGames.AppCenter命名空间下的TGWebUserHandler类的isVip和isVipOne方法的内容改成1行return true即可(isVipOne方法必须改,isVip方法可以不改,isVip只影响软件主界面左下角的VIP图标显示):


19.png (24.45 KB, 下载次数: 0)
下载附件
19
2024-6-18 15:49 上传



20.png (16.18 KB, 下载次数: 0)
下载附件
20
2024-6-18 15:49 上传



21.png (44.99 KB, 下载次数: 0)
下载附件
21
2024-6-18 15:49 上传



22.png (46.3 KB, 下载次数: 0)
下载附件
22
2024-6-18 15:49 上传

下载次数, 上传

caoyuze
OP
  


whuang111 发表于 2024-6-19 13:42
为什么我修改isVipOne方法,保存后,卡在TCGAMES图标 进不去软件了

改完代码点编译有报错没?没报错的话应该没啥问题,2处改完然后点文件->全部保存就行了,dnSpy用32位的并已管理员权限运行
Lty20000423   

感谢分享解锁VIP教程,通俗易懂
王诚   

太复杂了,不懂,谢谢。
Yifan2007   

其实上来直接搜vip或者svip这类就行了,这种软件命名大多都很统一
reignobe   

苦vip久矣  先前玩火影忍者手游用的就是这款
xxl1039   

感谢分享,学习了。
adj   

看不懂,但是看着就很厉害!!
zuxin521   

非常棒的原创分享,但是试图教会我,是不可能的
msmvc   

在不爆破的前提下,最好是能算出注册码,这样用着放心,毕竟你也不知道程序里有没有地雷
您需要登录后才可以回帖 登录 | 立即注册

返回顶部