意犹未尽而来的第一篇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开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用.但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的 ...
随机推荐
- MySQL DBA教程:Mysql性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感 ...
- 深入理解计算机系统第二版习题解答CSAPP 2.8
给出位微量的布尔去处的求值结果. 运算 结果 a 0110 1001 b 0101 0101 ~a 1001 0110 ~b 1010 1010 a&b 0100 0001 a ...
- day-3
/* 快noip了!!!感觉还有好多事要做 上午考试 原题没做 自己找了套题 挺水的 T1模拟(然而没认真读题 90) T2 dp+简单优化 数据有点问题 T3 暴力状丫 然而写丑了 60分的要两秒多 ...
- Insert后返回自动插入的生成的ID:select @@identity
当运行完插入语句后,执行select @@identity就可得到自动生成的id 如果是sql server 最好用:select SCOPE_IDENTITY() as id因为@@identity ...
- SQL Server内连接、外连接、交叉连接
前言 在数据库查询中,我们常常会用到的表连接查询,而我自己在工作中也是时常用这些表连接查询.而就在刚刚我却还没有搞清楚数据库表连接到底有哪几种, 这几种表连接查询方式又有什么区别,实属惭愧!借以此文以 ...
- Jquery Ajax 调用 WebService
原文:http://www.cnblogs.com/andiki/archive/2010/05/17/1737254.html jquery ajax调用webservice(C#)要注意的几个事项 ...
- mark jquery 链式调用的js原理
我们在使用jquery的时候会用到类似$("#id").css('color','red').show(200); 这样写有点减少代码量,减少了逐步查询DOM的性能损耗: js 原 ...
- ios-异步消息同步问题-典型使用场景: 微信私信界面
前言 在ios开发中常常会有聊天功能,一般简单聊天功能只传输文字,但是稍微复杂点儿会有图片发送功能了.最全而且可支持扩展的例如微信,qq 聊天功能了.传输方式各有千秋,如get,post,websoc ...
- dbms_job和dbmsi_job
工作中可能遇到这样的情况,在A用户下有一个不用的job,但是dba不知道A用户的密码,怎么删除这个job呢. 相信大部分人都会尝试在sys用户下用dbms_job.remove()命令去删除它,但 ...
- iOS iOS与html进行交互
实现的 效果就是上边那样:首先通过webview 进行网络请求 然后进行显示. 然后点击下一页的按钮 通过js的响应显示另一个网页 最后通过下一页的按钮可以返回到首页. 本文仅仅是h5跟ios 的交互 ...