吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9686|回复: 99
收起左侧

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

  [复制链接]
17371221025 发表于 2021-7-5 10:34

安卓逆向之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层逆向分析中经常用到的手段,不断的去尝试,总能找到线索!好了今天的分享就到这,后面还会分享更多的案列,想要反编译工具和样本可以私信我,或在评论下留下邮箱,原创不易,感兴趣的点个赞和关注,谢谢!

免费评分

参与人数 22吾爱币 +26 热心值 +20 收起 理由
ddyixia + 1 + 1 谢谢@Thanks!
gaowy01 + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!
zouzhiqiang + 1 + 1 用心讨论,共获提升!
纳豆333 + 1 + 1 我很赞同!
zhan + 1 + 1 谢谢@Thanks!
Alterx + 1 + 1 鼓励转贴优秀软件安全工具和文档!
lianshan + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
贰拾 + 1 + 1 谢谢@Thanks!
gaoruhu21 + 1 谢谢@Thanks!
林子辰 + 1 + 1 热心回复!
往復不息 + 1 + 1 我很赞同!
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
linhai888 + 1 + 1 谢谢@Thanks!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lmy800 + 1 + 1 我很赞同!
homehome + 1 + 1 谢谢@Thanks!
bjxiaoyao + 1 + 1 谢谢@Thanks!
o0蜗牛 + 1 我很赞同!
wjjj44 + 1 + 1 谢谢@Thanks!
zyh666 + 1 + 1 谢谢@Thanks!
hydome + 1 + 1 谢谢@Thanks!
nullable + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ohhZ 发表于 2021-7-6 18:37
大佬,我想要你这破解的愤怒小鸟玩玩
 楼主| 17371221025 发表于 2021-7-31 20:53
Boluofan 发表于 2021-7-31 10:51
还有几个事请教下 请问楼主对反混淆了解吗?一些反编译出来的源码 方法名和变量名都做了混淆,可读性很差。 ...

一般在实际项目分析中通过hook和方法栈跟方法栈踪来分析代码逻辑,反混淆还是比较困难的,而且可读性也还是很差,至于脱壳可以看看看雪的FART,还有Frida 实现脱壳,,还有一些自动化脱壳工具.脱壳方法很多主要还是针对什么类型的壳
蒂兰圣雪 发表于 2021-7-5 11:13
freebsdpf 发表于 2021-7-5 11:27
收藏一下  说不定哪天用得上
S.L.Kagura 发表于 2021-7-5 11:29
这把狗粮猝不及防...
 楼主| 17371221025 发表于 2021-7-5 11:34
S.L.Kagura 发表于 2021-7-5 11:29
这把狗粮猝不及防...

还得需要个女朋友,提升破解的动力
nullable 发表于 2021-7-5 11:56
话说最喜欢看这种用女朋友引入的好文了,很有深度,感谢大佬分享
o0蜗牛 发表于 2021-7-5 12:30
感谢大佬的激励,能把DDMS操作再细化一下,对新手就更友好了
hydome 发表于 2021-7-5 12:39
学习了,谢谢分享
 楼主| 17371221025 发表于 2021-7-5 13:38
o0蜗牛 发表于 2021-7-5 12:30
感谢大佬的激励,能把DDMS操作再细化一下,对新手就更友好了

如果觉得能帮助到各位的话,后面还会发几篇java层分析实战案列贴子

免费评分

参与人数 1吾爱币 +1 收起 理由
o0蜗牛 + 1 期待,期待

查看全部评分

芽衣 发表于 2021-7-5 15:21
谷歌版不香吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表