打击违法直播 净化网络环境
某天,我的一个朋友(这个朋友真不是我自己)发了我一款聚合直播App,大喜过望之后发现需要充值才能继续观看,
我这种穷逼哪来的钱充值,所以就有了这次逆向之旅
一、反编译
用 jadx-gui 直接打开Apk,发现没有加固,源码如下:
二、源码分析
1. 打开app,通过adb查看当前activity的名称
adb shell
dumpsys activity | grep -i run
com.box.base.MainActivity就是主页
2. MainActivity有四个tab页,找到第一个tab页FragmentLivePlatform
打开FragmentLivePlatform,整个界面比较简单,为RecyclerView实现的GridView视图
找到item的点击事件
查看ActivityRoomList类,也是GridView布局,
查找item点击
jionLiveRequest请求完成后,会触发续费的dialog窗口,我们在这里拦截响应结果
我们发现请求时会传递当前界面的handler,查看hadler实现
当isSuccessFul方法返回false时,会弹出续费的dialog,那么问题简单了,我们只要修改isSuccessFul的返回值即可
修改isSuccessFul方法,永远return true
三、破解
1. apktool -r d test.apk
2. 将isSuccessFul复制到as中并修改
3. 生成smali代码(android studio 中使用java2smali插件)
4. 替换原代码(第一步apktool 反编译出来的smali文件)
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,网络抓包等内容。
后面会针对性的去尝试破解,并寻找对应的安全方法