意犹未尽而来的第一篇Android 逆向
游戏:咕噜王国大冒险
平台:android
目标:
1. 去除乱七八糟提示(本篇目标)
2. 去除google弹窗



破文开始:
1. 使用APKIDE反编译;搜索字符串“Problem setting up in-app”,看下图

于是来到下图

分析函数要注意:返回值;这里是V,即void;所以向下关注就应该能达到我们的目的,没必要向上关注;这个函数的功能: 拼接目标字符串,然后作为参数传递给待关注函数;
跟踪函数来到下图:



这个函数功能:使用java中的反射调用;即,这个函数使用java的反射机制,调用了 GameApplication 中的 sendToastMsg 函数;继续跟踪来到下图:

这个函数功能:使用java 中的 handle 发送消息,本质就是在传递数据;注意圈出的地方,handle 消息一般都在实现 handle 的那个类中的 handleMessage 中处理,通常 switch 分支 表达式 就是 Message 中的 what 字段;这图中已经圈出了handle sendMessage 的目标是 v0对象,即,GoloRunnerStart 类中的 字段 myHandler; 所以继续跟踪来到下图:


我们需要找到myHandler变量的值到底是谁,就要关注iput-object语句,看是什么值被赋予了这个变量;这张图,的确符合关注的条件,但是,稍微分析,知道这里是<init>V,是构造函数,初始化变量的地方,再看myHandler被赋予v1,而v1=0x0;所以这里不值得关注,继续寻找来到下图:

这里就是值得关注的地方,看到myHandler被赋予了一个有意义的值;这个值是一个实现了handler的类,这个类就是sendMessage的目标;所以跟踪来到下图:

看到handleMessage了吧,还记得前面sendMessage的时候那个what字段被赋予的值是多少吗?知道的话,那就看下图吧,不记得了的话,回头看看再回来;

这里结合what的值,可以知道,前面sendMessage发送过来的消息,使程序执行了::sswitch_c分支;看下图:

还记得sendMessage发送过来的除了what值,还有 什么吗? 还有那个我们第一步搜索的那个字符串经过和另外的字符串拼接之后的字符串,即我们目标图片上显示的那个完整的讨厌的字符串,这个分支就是得到这个字符串,然后 调用包装好的用来显示toast的函数showToast把那个讨厌的提示给我们显示出来;到这里就可以完美的修改代码了,如何修改看下图:

如果就这样结束的话,有人可能会问为什么不继续跟进那个showToast呢? 其实这个showToast函数应该跟进去看看,里面根据toast对象是否存在,选择toast的两中使用方法中的一种(一种是使用Toast对象 ,令一种是 使用toast类的makeTest静态方法);由于这个包装函数showToast函数,可能会被其他地方使用来显示我们不讨厌的提示,所以我不建议在这个包装函数里面改代码;最后给出那个包装函数的截图:

意犹未尽而来的第一篇Android 逆向的更多相关文章
- 淘宝(阿里百川)手机客户端开发日记第一篇 android 主框架搭建(一)
android 主框架搭建(一) 1.开发环境:Android Studio 相继点击下一步,直接项目建立完毕(如下图) 图片看的效果如果很小,请放大您的浏览器显示百分比 转载请注明http://w ...
- Android逆向工程师的黑科技
你们发现了吗?Android逆向.安全方面的工程师真的越来越"稀有"了. 以腾讯.美团.百度为代表的大厂们,在某招聘网站上居然薪酬高达30-60k. 现在移动端市场越来越火热,AP ...
- Android 逆向实战篇(加密数据包破解)
1. 实战背景由于工作需要,要爬取某款App的数据,App的具体名称此处不便透露,避免他们发现并修改加密逻辑我就得重新破解了. 爬取这款App时发现,抓包抓到的数据是加密过的,如图1所示(原数据较长, ...
- Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...
- Android基础学习第一篇—Project目录结构
写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...
- [转载] Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用.但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的 ...
- Android开源项目第一篇——个性化控件(View)篇
本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Ga ...
- Android开发UI之开源项目第一篇——个性化控件(View)篇
原文:http://blog.csdn.net/java886o/article/details/24355907 本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍A ...
- Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用.但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的 ...
随机推荐
- vim中的一些高级命令的使用
现在一般在windows下面对txt文档操作的时候,我一般使用gvim软件来操作,虽然没有unix/linu下面的正宗,并且很多命令没有,但是还是有很多方便之处的 下面是重温vim命令时,我我自己以前 ...
- (原创)speex与wav格式音频文件的互相转换
我们的司信项目又有了新的需求,就是要做会议室.然而需求却很纠结,要继续按照原来发语音消息那样的形式来实现这个会议的功能,还要实现语音播放的计时,暂停,语音的拼接,还要绘制频谱图等等. 如果是wav,m ...
- 获取java项目 classpath目录
this.getClass().getResource("/").getPath(); 从根目录获取载入文件: this.getClass().getResourceAsStrea ...
- MAC上搭建Jenkins + Android + IOS自动开发部署环境
因为MAC是大小写不敏感的操作系统,很多Linux命令不支持,所以首先要创建大小写敏感的操作系统. 设置静态IP 打开"System Preferences..." 点击" ...
- ECMA5 Array 新增API reduce
1)reduce:相当与迭代: [].reduce(function(previous,current,index,array){ return previous * current;//相当与做阶乘 ...
- Servlet & JSP - Decorating Requests and Responses
Servlet API 提供了四个包装类:ServletRequestWrapper.ServletResponseWrapper.HttpServletRequestWrapper.HttpServ ...
- .NET 统一用户管理 -- 统一鉴权
统一鉴权 目的 为什么要统一鉴权了,每一个业务系统几乎都离不开,用户,角色,权限 这个 3个基础功能,为了避免各个系统各自去开发一套权限管理等基础功能,也同时轻松管理每个用户的全部权限. 怎么做 ...
- jsf taglib定义函数
创建文件 在文件中添加function标签 <function> <function-name>getFileContent</function-name> & ...
- Oracle抓取表结构的语句
oracle --------------------------------------- SELECT case when t.COLUMN_ID=1 then t.table_name en ...
- AFNetworking3.0+MBProgressHUD二次封装,一句话搞定网络提示
对AFNetworking3.0+MBProgressHUD的二次封装,使用更方便,适用性非常强: 一句话搞定网络提示: 再也不用担心网络库更新后,工程要修改很多地方了!网络库更新了只需要更新这个封装 ...