吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 24534|回复: 16
收起左侧

[Android 原创] 一个很变态的apk,屏蔽升级提示的心得记录,供大家参考思路

  [复制链接]
大侠阿木 发表于 2015-5-30 02:41
本帖最后由 大侠阿木 于 2015-5-30 14:12 编辑

先介绍下这个软件的情况
1,当前版本8.0.0,联网强制提示更新到8.1.0,弹窗无法关闭无法取消;
2,有一定概率不弹出更新提示,猜测是获取新版本信息超时所致;
3,然后有人就是想用旧版本,偏不更新,擦!

我的思路记录
1,按经验,修改VersionCode就可以了,神奇就神奇在反编译后AndroidMainfast.xml中没有这个字段,也没有VersionName字段,但软件在android手机中又能显示版本号8.0.0,apktool的编译信息中也有VersionCode=800和VersionName=8.0.0。但我用Notepad++搜索整个反编译后的文件夹,未找到800和8.0.0的内容,我甚至搜索了800的16进制值320,也没找到结果。也试了使用记事本直接打开未反编译的的AndroidMainfast.xml也能看到VersionName和8.0.0的字样,使用UltraEdit查看未经反编译的AndroidMainfast.xml可以看到VersionName和VersionCode,但同时能看到一大串有规律无意义内容,猜测是混淆代码。
2,那么判定结果就是:VersionCode和VersionName仍然在AndroidMainfast.xml中,只不过被加密了,反编译后就看不到了,此时的我我禁不住发出一声,操!
3,换思路,搜索“http://”,一个一个看,也没发现类似于更新网址的内容,试着把几个看起来像的地址改为127.0.0.1,也没效果,然后尝试了搜索“url”关键词,未果,“Check”关键词,未果,“Update”关键词,未果,我人已几近崩溃。
4,想到直接在16进制下修改800,于是用UltraEdit打开未经编译的AndroidMainfast.xml,搜索“03 20”和“32 00”和“00 32” ,反正结果很惨,看起来都不像,这里我是凭感觉弄的,可能门道没摸对,不是这么搜的,反正此路不通。
5,要放弃了,想到抓包看看,不过之前android上的抓包软件找不到了,搜也没搜到(谁有发给我哈,可以查看具体每个应用的联网数据的),只好用了Fiddler来实现,好在设置很简单。
很快抓到它的更新地址是
http://yxpt.sinaapp.com/update?bid=yx1&cp=Android&cv=8.0.0&netmode=wifi&ts=1432902866&uid=8149845&sign=97e860bf0f71346bb0eef3909ba179f8
很激动,赶紧修改hosts试试,结果它又访问了其他域名,这才注意到它貌似是通过通过ssh获取了这些网址,而client2.google.com又会被很多其他软件使用到,不能屏蔽这个,同时也说明为什么我发现了概率性的不弹更新提示,因为不同的链接访问速度不一样(刚好公司网络又非常差),其中有一些会超时。So,刚刚燃起的希望又破灭了。
QQ20150529212808.png

6,冷静下来,发现上面的更新网址仅仅是域名和后面参数里的sign值不同,其他参数和值都是一样的,再仔细看,参数里面有当前的版本号8.0.0,显然是用于给服务器对比是否有最新版本用的。参数名为“cv”,如果能把8.0.0改为8.1.0或更高,服务器不就认为当前是最新版了?于是立刻搜索这个关键词,发现它和其他参数都由同一个文件定义和生成,如下图
QQ20150529213147.png

7,关键地方来了,找到这里,我灵机一动,想到了,把引号里的cv改成了cv=8.1.0&x,改了之后,软件上传的更新链接就会变成类似于这样
http://yxpt.sinaapp.com/update?bid=yx1&cp=Android&cv=8.1.0&x=8.0.0&netmode=wifi&ts=1432902866&uid=8149845&sign=97e860bf0f71346bb0eef3909ba179f8
注意看,cv参数后面的值是我刚改的8.1.0,后面的x和原来的=8.0.0组成了另外一组参数,然而并没有什么卵用,是组无意义的参数(按经验服务器才不会校验连接中是否有多余参数,因为浪费资源,只会取有效参数)
8,我以为OK了,结果升级提示的确没了,但是也不能打电话了,提示错误,擦,继续改,想到之前发现的一个超时逻辑,我就把这个时间改短就好了嘛,直接改成0,然后app报错,改成1(毫秒),却又提示我手机系统时间设置错误,额,蛋疼。
9,继续换思路,在浏览器里把原来的更新链接打开了,发现如下内容
{"code": 0, "data": {"tips": "\u8bf7\u7262\u8bb0\u5e10\u53f7\u5bc6\u7801\u518d\u5347\u7ea7 1.\u5168\u65b0UI\u6e05\u723d\u754c\u9762 2.WIFI\u76f4\u62e8\u65b9\u5f0f\u901a\u8bdd\u663e\u53f7, \u66f4\u65b9\u4fbf,\u66f4\u7a33\u5b9a 3.\u89e3\u51b3\u90e8\u5206\u673a\u578b\u9002\u914d\u95ee\u9898 4.\u66f4\u591a\u6539\u53d8,\u7b49\u4f60\u53d1\u73b0", "forced_flag": "y", "version": "8.1.0", "down_url": "http://113.107.238.17/dd.myapp.com/16891/9A3595BAFA8DBEA5372302AE01758C8A.apk"}}
其中的确返回了8.1.0的版本号,我就在app中搜索version字段,想将判断版本的逻辑调转一下,有新版本,则不提示,无新版本则提示更新。试了下,发现仍然有更新提示,仔细检查了我改动的地方,的确没错啊,什么原因呢?
10,又发现上面返回的内容里有一个参数是force_flag,值是y,立刻联想到,y表示yes,这里表示强制更新版本,那就按刚刚的思路,调转一下判断逻辑,识别到force_flag=y,则不强制更新,打包测试,拨了一个电话,这次成功了!


以上经验已经发表在我的博客iamthe.top,也欢迎大家交流。
我对于android的理解非常浅薄,尤其是smali,以上如果有说的不对或者出洋相的地方,大家尽管指出来。

对了,这个应用叫东阿亿信,是一款回拨原理的通话软件,网上上有非常便宜的包时段卡,我放了8.0.0的版本在下面,如果大家对这个版本感兴趣,可以自己花一块多钱买个账号研究练手。http://pan.baidu.com/share/link?shareid=3396196588&uk=1478247800


点评

辛苦了,写得好纠结啊。  发表于 2017-5-2 21:58

免费评分

参与人数 5威望 +1 热心值 +5 收起 理由
dyx520 + 1 我很赞同!
D13 + 1 升级提示可以直接用fiddler修改提交包
Hmily + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
Danica + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
jw8013 + 1 在你的博客看到过的说!

查看全部评分

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

chinanala 发表于 2015-6-17 03:58
楼主我告诉你一个更简单的方法:
      1.使用最新版的 apktool ,比如RC4 ,反编译后 xml里面就有 versionName 和 Id了;
      2.虽然 manifest.xml里面没有 versionName和 id,但是反编译目录下,应该会有 apktool.yml ,直接修改这里的版本信息,回编译之后也有效的
越峥嵘越从容 发表于 2015-5-30 03:42
我叫齐齐123 发表于 2015-5-30 03:56
gmtty 发表于 2015-5-30 07:16
楼主辛苦,学习了
jianglifeng 发表于 2015-5-30 07:26
没有搞清楚楼主说的是什么啊,哎。。。
我是坏人 发表于 2015-5-30 07:35
不明觉利, 顶一下
一个人的思念。 发表于 2015-5-30 07:48
楼主说的什么APK-= =
左岸麦田 发表于 2015-5-30 10:54
感谢楼主分享经验教程。
jw8013 发表于 2015-5-30 14:46
这是一个网络电话的修改
不过没听过的说!!!
lthink 发表于 2015-6-5 23:57

感谢楼主分享经验教程。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 13:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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