少年乘勇气,百战过乌孙。这篇文章主要讲述Android逆向之旅---破解&
quot;
穿靴子的猫&
quot;
游戏的收费功能相关的知识,希望能为你提供帮助。
一、游戏收费分析游戏收费非常正常的,可是玩游戏最恶心的就是你还没玩就要充值,非常恼火,事实上我不怎么玩游戏,主要是给小孩子们弄,比方如今好多小屁孩们喜欢玩水果忍者这个游戏。可是这个游戏在没有開始玩的时候就弹出个收费的界面:
文章图片
这个是不可忍受的,尽管支付费用不是非常多。可是还是不想支付。这个对话框是强制性的,当点击取消就退出游戏了,所以这里必须支付成功了才干够继续玩耍。
二、寻找破解入口前面已经看到了这个游戏入口收费场景,以下咋们就把这个功能给去掉就可以。从以往的破解经验来说我们有几百种方法把这个东西干掉。比方:不然这个收费解密展示,改动取消之后的逻辑代码不让其退出游戏等。
都是各种手段。本文就简单点做。直接让这个界面不展示。
操作非常easy。这个游戏没有加固。首先用apktool工具反编译。由于要找到这个界面入口,我们能够通过字符串进行搜索就可以,反编译之后在values/strings.xml文件里找到“好友代付”这个字符串内容:
文章图片
找到之后。看到这个字符串的id是:gc_billing_net_contacts,这里能够不用在通过public.xml中的id值转化得到相应的int类型值。再去搜索了。能够直接到jadx中进行搜索就可以:
文章图片
这里看到有一个BillingView类,从命名能够猜想这个应该就是上面那个收费的页面:
文章图片
这个视图继承了LinearLayout布局,详细实现这里就不截图,从View的代码实现能够确定就是上面的收费页面。在看看这个类在哪些地方有调用:
【Android逆向之旅---破解& quot; 穿靴子的猫& quot; 游戏的收费功能】
文章图片
到这里看到应该是两个地方。一个是BillingActivity类。一个是GameInterface类,那么就有两个分析路线了,这里用一个巧妙的办法直接定位到是哪个类,假如是BillingActivity类,那么当前的topActivity就是他。我们用命令查看当前设备的topActivity看一下:adb shell dumpsys activity top
这里看到并非BillingActivity类,所以能够断定,处理收费的页面是在GameInterface类中。那么直接进入这个类的getBillingView方法中:
文章图片
然后查看这种方法在哪个地方被调用了,这里假设发现Find Usage菜单不好使,也能够直接全局搜这种方法:
文章图片
这里看到有两个地方用到了这种方法,依旧是依照上面那个topActivity推断,不可能是DGCPaymentActivity这个类了,所以直接看以下那个类,点击进入就可以:
文章图片
三、屏蔽收费入口功能到这里就清楚了,这里通过一个Dialog来进行展示的,设置Dialog的contentView就可以。所以找到展示的入口了,干掉这个入口就简单了。找到相应的smali代码,直接凝视这行show代码:
文章图片
然后在回编译又一次在打包就可以,只是可惜的是,执行时报错的:
这里搜了一下,没有好的处理方法。最后直接把整个方法代码所有干掉。让这种方法称为一个空方法,直接用一个指令替换原来的代码就可以:return-void,直接方法返回:
然后再次回编译打包就可以。这次就看不到那个收费的对话框了。
游戏apk下载地址:http://pan.baidu.com/s/1bo6rFdX
严重声明:本文的目的非常单纯仅仅是为了介绍逆向技术,绝没有不论什么商业目的,假设有人将此文技术用于商业目的带来的不论什么法律责任将由操作者本文承担,和本文内容作者没不论什么关系,也由衷的希望各位能够秉着技术学习的态度阅读此文,非常感谢!
四、总结本文就简单的介绍了怎样去除游戏中的收费功能,顺利进入游戏玩耍。能够看到本文的篇幅非常短,事实上这个破解流程非常easy。适合0基础逆向爱好者入门练习功能。文章阅读完了,记得多多分享扩散!
很多其它内容:点击这里
关注微信公众号。最新技术干货实时推送
扫一扫加小编微信
加入时注明:“编码漂亮”否则不予通过。
推荐阅读
- Mac下Android studio 之NDK配置教程
- Android利用RecognizerIntent识别语音并简单实现打电话动作
- Hbuilder开发app实战-识岁03-文件上传
- Android清单文件具体解释 ---- 应用程序权限声明
- 使用Android Studio 哪些文件可以直接被版本控制软件忽略
- android 网络框架 源码分析
- dapper参数不定时用这种方法动态参数
- registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web applicat
- 安卓和 java 学习笔记