djcsdjcs 发表于 2016-12-16 00:09

TX欢乐麻将全集KILL更新机制

本文为论文性质,请勿转载;本文仅学习讨论加密解密技术,勿用于其他任何用途,否则与本人无关!!!!
近来有朋友咨询能不能去掉欢乐麻将(IOS端,版本5.2.1)的更新机制,如图1


研究了一下,记录修改过程如下:一般更新的机制在于比较客户端和服务端的版本号,客户端版本号低则进行更新。首先抓包,看看数据中有无版本号的相关信息,如图所示


systemversion=5001000,应该是这个了。再去下载一个游戏的最新端(版本6.3.4),安装进入游戏,再次抓包,发现版本号为systemversion=101187598,下面我们就将老版本客户端的版本号(包括这个systemversion以及游戏本身的版本号)伪造成新版本的版本号。其实通过hook也可以轻松实现伪造,但是比较版本号修改很简单,修改二进制文件会更快。将IPA解压,把happymj拖进IDA,在strings window寻找目的字符串,轻松找到(只有这一处),如图所示


看看交叉引用这两个比较nice的方法名,心中窃喜。gameversion这个5.2.1好改,直接改成6.3.4就行,cgiversion(也就是抓包中的systemversion)麻烦些,原来只有7字节,现在变成了9字节,想来想去,决定借用gameversion的字节吧,把gameversion改成6.3 后面的俩字节给cgiversion用,改完之后变成了这个样子


然后再改一下交叉引用,这是原来的样子


把引用字符串的偏移往前移两个字节


然后替换修改后的happymj,重新签名,发现可以不用更新正常进入游戏了,成功kill了该游戏的更新机制。

fengkang0223 发表于 2017-2-11 10:09

楼主问你一个问题!安卓版本 我也是破解了强制更新才能上去老版本 但是有个问题就是以前没让强制更新地时候2人麻将官家场(就是说个别场子是可以玩地)破解了之后点进去就提示没有找到合适地对手 请重试    但是像血流什么都可以正常玩!我在想是不是服务器关闭了低版本地接口
但是按道理说关闭接口就会登录不上去!这就很纳闷了 难道问题出在只修改版本号地原因?导致服务器检测不出来吗?

djcsdjcs 发表于 2016-12-16 22:48

Hmily 发表于 2016-12-16 15:35
请教下ios上方便直接对校验升级的函数入口直接retn吗?还有就是修改后的文件签名指的是什么签名?

可以看一下校验升级函数的代码,这个游戏我没看,因为改版本号很简单,去爆破校验升级函数应该也可以,直接rerun那就不好说了,每个ipa文件都有签名的,改动后必须重签名

▓▓▓▓▓▓▓ 发表于 2016-12-16 00:19

{:301_978:}学习了谢谢

geeky 发表于 2016-12-16 04:59

dszsdyx 发表于 2016-12-16 06:55

一直用老版的没有更新过

王莽 发表于 2016-12-16 09:30

涨姿势了

a3512740 发表于 2016-12-16 09:51

防更新时为了干什么的呢   

gongjiankk 发表于 2016-12-16 09:58

不错啊,小子。。。。

404607073 发表于 2016-12-16 14:04

不错,楼主大爱分享........

Hmily 发表于 2016-12-16 15:35

请教下ios上方便直接对校验升级的函数入口直接retn吗?还有就是修改后的文件签名指的是什么签名?

落魄狂人 发表于 2016-12-16 15:37

除非你习惯老版本
页: [1] 2 3 4 5
查看完整版本: TX欢乐麻将全集KILL更新机制