Android逆向学习(1)--记一次破解某直播盒子App

打击违法直播 净化网络环境
 

某天,我的一个朋友(这个朋友真不是我自己)发了我一款聚合直播App,大喜过望之后发现需要充值才能继续观看,
我这种穷逼哪来的钱充值,所以就有了这次逆向之旅

一、反编译

用 jadx-gui 直接打开Apk,发现没有加固,源码如下:

Android逆向学习(1)--记一次破解某直播盒子App_第1张图片

 

二、源码分析

1. 打开app,通过adb查看当前activity的名称

adb shell
dumpsys activity | grep -i run

Android逆向学习(1)--记一次破解某直播盒子App_第2张图片

com.box.base.MainActivity就是主页

2. MainActivity有四个tab页,找到第一个tab页FragmentLivePlatform

Android逆向学习(1)--记一次破解某直播盒子App_第3张图片

 打开FragmentLivePlatform,整个界面比较简单,为RecyclerView实现的GridView视图

Android逆向学习(1)--记一次破解某直播盒子App_第4张图片

找到item的点击事件

Android逆向学习(1)--记一次破解某直播盒子App_第5张图片

查看ActivityRoomList类,也是GridView布局,

查找item点击

jionLiveRequest请求完成后,会触发续费的dialog窗口,我们在这里拦截响应结果

我们发现请求时会传递当前界面的handler,查看hadler实现

Android逆向学习(1)--记一次破解某直播盒子App_第6张图片

当isSuccessFul方法返回false时,会弹出续费的dialog,那么问题简单了,我们只要修改isSuccessFul的返回值即可

修改isSuccessFul方法,永远return true

三、破解

1. apktool -r d test.apk

2. 将isSuccessFul复制到as中并修改

Android逆向学习(1)--记一次破解某直播盒子App_第7张图片

3. 生成smali代码(android studio 中使用java2smali插件)

Android逆向学习(1)--记一次破解某直播盒子App_第8张图片

4. 替换原代码(第一步apktool 反编译出来的smali文件)

Android逆向学习(1)--记一次破解某直播盒子App_第9张图片

5. apktool b test, 拿到未签名的apk

6. 签名

jarsigner -verbose -keystore test.keystore -signedjar G:\signapk\test.apk G:\hack\test_unsigned.apk android.keystore

大功告成

 

总结:

文中的app为快餐式应用,并未进行加固,代码混淆,重签名校验等安全策略,

所以并未涉及到脱壳,xposed,动态分析so,网络抓包等内容。

后面会针对性的去尝试破解,并寻找对应的安全方法

你可能感兴趣的:(android)