安卓逆向之JAVA层静态分析(愤怒的小鸟去广告,充值破解)

前言

今天女票跟我吐槽,自己闲来无事下个愤怒的小鸟玩玩,结果又是实名认证,又是广告啥的,瞬间没心情玩了,我听后大惊,还有这种事。跟女票说:“把手给我”,女票娇羞的过来牵我手,我一脸茫然的说:“不对,是把手机给我。。。。。”

准备工作

话不多说,咱们上道具,将APK安装到手机上,这里为了方便演示用模拟器,打开Androidkiller 反编译APK,反编译完后拿到smali 源码,为了更方便分析阅读代码,打开jadx ,导入APK。最后打开DDMS,将程序在模拟器上运行起来。

实名认证弹框代码定位分析

上面准备工作做完后,我们就可以开始分析了,将程序在模拟器上运行后界面是这样的,提示我们要进行实名认证。那我们第一步先得干掉这个弹框。

看到这个大家的第一反应是不是也跟我一样,先去androidKiller 里面去搜索这个弹框上面的关键字,你会发现什么也搜索不到,那会不会该弹框不是在java层实现的呢。我们继续分析,使用DDMS工具进行方法刨析看能不能获取更多的信息,步骤如下
1.在上面的姓名栏,和身份证栏随便输入一些信息,如下图

2.打开DDMS工具,选中包名,先把日志清空,选择右上角箭头所指按钮,会弹出如下弹框,选择ok。回到游戏点击提交按钮,然后立马回到DDMS,点击下图2的停止按钮,这样我们就截获到刚才提交一个事件调用到的方法了


3.执行完上面步骤后,我们截获到了这过程中执行的方法,那我们去找关键API函数,如果先去找onClick 点击事件函数,发现没有。那我们再去找dialog 的show 方法发现也没有,那我们只有从其他地方入手定位代码了

上面我们经过一系列方法都没有定位到关键代码,那我们只好去找其他线索,当我们点击返回键时,你会发现又出现了一个新的弹框,如下

有过正向开发的经验的同学,应该一眼就能开出来这不是就是Android MD风格的弹框吗,找到这个,我们再去androidKiller 里面去搜索关键字"实名认证提示",这里搜索中文搜不到,还需转unicode 编码,搜索结果如下

搜索到一个类,smali 代码阅读不方便,我们打开jadx,根据包名类名去找到该类,jadx会将smali 代码还原90左右,这样方便我们阅读,打开如下。

实名认证弹框代码分析

上面我们经过一系列的方法定位到代码,接下来只需要分析它实现的逻辑,然后去修改就好了,接下来我们分析下代码。


根据上面两图我们找到了点击返回键的弹框调用方法,但是显然不是我们想要的,咱们继续分析。该类是一个fragment,在onCreateView 中我们发现如下方法。

分析到这里,是不是一目了然了,这个弹框是用WebView组件加载一个网页显示,难怪之前我们啥也搜不到,分析完该类你会发现,该fragment只干了两件事,加载WebView弹框,所以我们只需要不加载这个fragment,就可以让这个弹框不显示了,在java 代码中我们只需要将onCreateView 方法返回null,就行了,接下来我们去找到对应的smali 代码的对应onCreateView ,如下图直接return-object 0x0

去弹框验证测试

我们改好smali 代码,再回编译,安装在模拟器上验证测试,如下图,成功去掉了弹框进入到了游戏。

广告代码定位

正当我进入游戏,就玩了一把,准备下一把时给我弹出了一个广告,这能忍,继续干,咱们还是打开DDMS分析,点到广告界面查看日志信息看能不能找到有用的信息,在我点击多次后,界面上出现一个吐司提示,DDMS也捕抓到了日志信息如下图。


那我们还是老样子先去搜索这个提示信息的关键字,搜索到一个类,并且和DDMS捕获到的日志对应上,我们在jadx中找到该类

下图是我们搜索的关键字出现的地方

仔细阅读代码,发现该类只是一个工具类,封装了很多功能方法,从上面往下看时,发现一处可疑的方法initialize(),从字面意思来看时初始化的意思,进入到下图箭头所指的方法里面你会发现,这里就是对广告SDK和支付SDK进行初始化的地方。

我们找到了广告初始化的方法,那直接注释掉广告不就不会加载了吗,找到对应smali 代码,注释掉该方法TwGameSDK.init(),如下图。

去广告验证测试

回编译,安装到模拟器上,打完游戏后没有弹出广告,成功!

支付定位

实名认证去了,广告也去了,咱们继续把支付也干掉,咱们点到支付模块,再点击取消,打开DDMS观察log信息,我们会发现如下信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210515160336588.png

我们还是老样子,直接搜索支付取消关键字,找到TwMultiPayDialog类,打开jadx去阅读分析,发现调用的是 CallbackManager.onPayCallBack,继续往里找,真正的支付逻辑就浮出水面了



分析完上面代码,我们只要让code=9999,让他返回成功,然后不就走支付成功的逻辑了吗,那我们直接去找到该类对应smali 代码,修改如下

支付验证测试

回编译,安装,购买,去游戏里查看道具,成功破解

后记

逆向的过程就是一个不断尝试的过程,就像破案一样,不断的去找线索,去尝试,本文分析中用到了关键字搜索,DDMS日志查看,DDMS方法刨析,这些是在java层逆向分析中经常用到的手段,不断的去尝试,总能找到线索!好了今天的分享就到这,后面还会分享更多的案列,想要反编译工具和样本可以私信我,或在评论下留下邮箱,原创不易,感兴趣的点个赞和关注,谢谢!

安卓逆向之JAVA层静态分析(愤怒的小鸟去广告,充值破解)相关推荐

  1. 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)

    1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...

  2. 初识Frida--Android逆向之Java层hook (二)

    目录 初识Frida--Android逆向之Java层hook (二) apk的安装与分析 流程分析 hook点分析 JavaScript代码构造与执行 0x00 hook getMac() 0x01 ...

  3. 逆向实战-某电视直播软件去广告

    好久没出文章了, 最近由于在找工作, 所以在面试之余, 逆向自己经常用到的一款看电视直播的软件. 目标: 去广告 难度: 一颗星 准备工作 工欲善其事, 必先利其器. 逆向需要的环境和工具这里不多说. ...

  4. 初识Frida--Android逆向之Java层hook (一)

    目录 0x00 文中用到的工具 0x01 hook示例的安装与分析 安装 源代码分析 0x02 frida自带的Messages机制与进程交互 0x03 Javascript代码构造与执行 方法一:获 ...

  5. 安卓逆向-new-sec6-4 Java反射相关知识以及平头哥框架hook构造函数 | App发布测试版本感染

    反射机制 app加上这个属性,也能发布测试版本,被成功感染,无需签名和发布那个release版本 APP是E:\1A_androidstudio_project\course4 插件是E:\1A_an ...

  6. 安卓逆向_4 --- Java 学习

    菜鸟教程 ----- Java 教程:https://www.runoob.com/java/java-tutorial.html 廖雪峰 ----- Java 教程:https://www.liao ...

  7. 安卓逆向系列教程 4.3 登山赛车内购破解

    4.3 登山赛车内购破解 作者:飞龙 首先在这里下载游戏:http://g.10086.cn/game/760000032287?spm=www.pdindex.android.addjgame.1 ...

  8. 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )

    From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...

  9. native层 安卓_安卓逆向——拼xx协议java层分析

    制丨阿星 整理丨阿星 老铁们大家好,今天小编给大家带来很实用的技巧叫拼xx协议java层分析,有啥不足的地方望大家指点指点! 首先抓包  反编译 这个时间段我们方法剖析一下 找到onclick 看他的 ...

最新文章

  1. TestBird烧烤趴,几维安全专属报名通道
  2. 如何仅从git存储库中稀疏签出单个文件?
  3. 微软 Build 2017 开发者大会:Azure 与 AI 的快速发展
  4. zookeeper开机自启动
  5. 【Alpha 冲刺】 1/12
  6. Varnish3原理学习
  7. ajax流式传输,直接流式传输JSON以响应Jackson
  8. Debenham养老金项目关键流程4-Opt in 流程
  9. xp 挂linux上网,XP系统挂载Linux NFS共享
  10. ophonesdn对首位优秀版主mobileguy的专访
  11. linux命令80字符,Linux终端:用cat命令查看不可见字符
  12. java同步器有哪些_Java 队列同步器 AQS
  13. 中文计算机语言编程优势,十种编程语言特点比较
  14. 虚拟现实(VR)技术的升级应用|时空克隆 三维视频融合 投影融合 点卯 魔镜系列
  15. 使用内网开发微信公众号
  16. 物联网毕业设计题目选题大全
  17. 三维分析之开敞度分析
  18. Java反序列化(一) - Java反射机制
  19. 微信小程序 TypeError: r.apply is not a function
  20. C语言实现学生成绩管理系统(EasyX图形界面)

热门文章

  1. arduino入门教程系列一:初识arduino
  2. 九宫重排 蓝桥(bfs)
  3. C语言实现随机点名器
  4. recipe for target 'CMakeFiles/check' failed
  5. 使用邮箱地址标识用户
  6. MATLAB代码:基于二阶锥优化及OLTC档位选择的配电网优化调度
  7. 窝囊少爷 第一章 人品问题
  8. 计算机控制xbox,只需这五步操作 就能在电脑上玩Xbox了
  9. 错误信息:ids for this class must be manually assigned before calling save(): sample.db.Completedsample
  10. 设计模式:工厂方式模式、抽象工厂模式