本帖最后由 听鬼哥说故事 于 2014-7-23 11:55 编辑
·软件名称:荣耀wlan ·需求:非华为荣耀机子可使用 ·测试手机:小米1s 前言:在群里一个小朋友的需求,可能是感觉这个软件非常好用,没事可以蹭网玩吧,让我帮忙看一下这个软件,于是就着手分析了一下,比较简单的一个小软件。 注明一句:文章仅供测试分析学习,以及破解思路,需要继续破解的朋友,自行分析即可。我这边测试位置没信号覆盖,如果有朋友那里测试有其他问题,可以顺着本文的思路继续研究下去即可,关于此软件的其他分析思路,也可以发帖补充噢~ 再次注明:文章只是提供破解思路而已,完整的破解版,继续按照本文的思路分析下去即可,纠结于只想马上使用此破解软件,不是本文章的目的。
第一步:安装测试,查看相关信息正常步骤安装,打开,看看具体是什么情况:
第二步:思考如何分析看到这里,我们一般情况下是去看下Log日志,有什么特征的信息可以寻找使用,或者看软件的提示信息如何。
①.软件应该验证手机imei通过联网查询是否为荣耀机型 ②.本地应该会判断是不是华为机型,不是则弹出如图提示 ③.百度找一个荣耀的imei,找到获取手机imei的地方替换掉 ④.直接修改判断逻辑,让程序认为是荣耀机型 列出了这四条信息,那么我们就考虑一个最简单的方法,也就是直接修改判断逻辑,认为是荣耀机型,然后即可使用软件;其他方法也都是可以尝试使用的,那么我们下面先反编译软件,看一下程序的大致结构。
第三步:开始试验反编译apk,首先分析AndroidManifest.xml文件,看看软件的启动类是哪一个:
分析出启动类,我们就先放置一边,可以简单记录一下。 然后去values.xml中查看一下是否有那个提示信息“抱歉,该服务目前仅面向荣耀特定机型用户提供。”:
好了,已经发现这个,那么我们直接去public.xml中看看这个字段的索引值是多少吧(根据string的name字段去找):
嗯,记录一下这个id,然后我们将搜索一下看这个字符串在哪里被使用了:
四个文件,public.xml不用看了,R$string.smal也不用看,那么就剩下两个文件了,都打开看一下: 发现WifiResMapImpl.smali是定义一些字符串map表的内容,所以我们忽略掉,直接打开UiGuideActivity$1.smali文件:
看到这里的内容,说明这个是在一个switch语句里面的,满足当前条件,则进行toast弹框,那么我们继续网上面分析,看看switch语句:
这样就更清晰了,这里是一个广播的接受,猜测,如果是荣耀机型使用该软件,将会发送广播,然后这里接收到那个广播,然后判定是否可使用此软件。 然后我们就开始修改下面的判断吧,是判断接受的广播是不是空,是空则不走后面流程,然后这条判断以后,下面还有一个判断是不是这个广播的:
然后回编译,运行:
好了,看到这里,说明我们已经成功了....
第四步:测试另外一种方案
发现软件启动类以后,那么我们就从头进入一步一步分析去。 进入在AndroidManifest.xml文件中看到的主类,进入,然后找到onCreate()方法查看;
在onCreate方法末尾,看到这两处可疑的地方,看名称定义,第一个是载入定义,第二个0x7f03001e通过搜索发现
也就是显示用户同意的布局,所以这里我们又可以继续思考了:
①.修改掉上面if-eqz v0的判断,直接显示用户同意界面 ②.那个initData()方法里面是不是有什么东西 第一个思考,因为我们打开软件就会弹出一个是否同意的许可协议,所以这个判断就是是否弹出这个协议,软件中有可选下次打开不弹出,所以应该是那里的判断。 第二个思考,我们开始分析,查看initData方法:
看到这一个比较可疑。进入AccountMgr类里面看看一下
好了,不多说了,直接返回true 继续回编译,安装测试... 继续正常进入软件... 爱破解,爱鬼哥...
排版看的不舒服的,直接看文档即可
链接:http://pan.baidu.com/s/1sjQ70Vr 密码:8bzn ···听鬼哥说故事 ···7.19
|