安卓逆向 -- FridaHook破解某记账VIP

admin 2024年9月19日01:57:30评论23 views字数 2895阅读9分39秒阅读模式

样本下载地址

最近在学习frida,平常用极简记账记录日常流水,正好实战一波VIP破解

样本使用了360加固,但java代码没有混淆,总体难度不大适合新手上路

基本思路:

通过vip相关组件定位关键代码所在类

frida打印关键代码所在类信息

dump dex文件,分析关键代码

hook vip判断逻辑

一. 相关环境

测试机: Pixel 3XL Android12

主机环境: Windows10 frida-16.0.19 python3.10 Java8

相关工具: MT管理器 Jeb4.32

App版本: 2.4.4 (360加固)

二. VIP代码定位

使用MT管理器记录活动,点击已经购买,定位vip检测的相关类

可以发现关键类为com.luyun.simpleaccout.ui.VipActivity

安卓逆向 -- FridaHook破解某记账VIP

使用frida hook打印VipActivity相关信息

function main(){    Java.perform(function (){        Java.choose("com.luyun.simpleaccout.ui.VipActivity",{            onMatch:function(instance){                console.log("instance:",instance);                var methods=instance.class.getDeclaredMethods();            //方法                var fields=instance.class.getDeclaredFields();              //字段                console.log("n==========methods==========");                for(let i=0;i<methods.length;i++){                    var methodParams=methods[i].getParameterTypes()                    var methodReturnType=methods[i].getReturnType()                    var methodName=methods[i].getName();                    console.log(methodReturnType+" "+methodName+"("+methodParams+")");                }                console.log("n==========fields==========");                for(let i=0;i<fields.length;i++){                    var fieldName=fields[i].getName();                    var fieldType=fields[i].getType();                    var fieldValue=instance[fieldName].value;                    console.log(fieldType,fieldName,"=",fieldValue);                }            },            onComplete:function(instance){            }        })    })}setTimeout(main,500)

发现和支付/vip相关的几个方法

安卓逆向 -- FridaHook破解某记账VIP

三. DumpDex

使用frida-dexdump 拉取dex文件

安卓逆向 -- FridaHook破解某记账VIP

将所有dex文件拖进jeb工具分析(jadx无法正确反编译VipActivity相关部分代码)

四. 代码分析

反编译完成后搜索VipActivity,发现alreadyBuy()方法,该方法即为点击"已经购买"后的检测方法

内部主要通过调用isVip()判断是否为vip用户

安卓逆向 -- FridaHook破解某记账VIP

跟进发现isVip方法是继承自BaseActivity

该方法内部目测是向服务器拉取vip的起始和终止时间判断是否为有效vip,最终返回值为bool类型

安卓逆向 -- FridaHook破解某记账VIP

VipActivity中还能看到getVipType()不同返回值对应的vip类型

type=0时未解锁,type=1时可续订,type=2时是永久vip

安卓逆向 -- FridaHook破解某记账VIP

最初hook了VipActivity的isVip()和getVipType()方法,发现ui显示为永久会员但是仍然需要解锁

于是搜索所有isVip()和getVipType()方法实现

安卓逆向 -- FridaHook破解某记账VIP

安卓逆向 -- FridaHook破解某记账VIP

五. Hook脚本

将以上所有类的isVip和getVipType方法实现全部hook

function main(){    Java.perform(function (){        var baseActivity=Java.use("com.luyun.simpleaccout.ui.BaseActivity")        baseActivity.isVip.implementation=function(){            console.log("Hook isVip() method!Origin result=",this.isVip())            return true;        }        baseActivity.getVipType.implementation=function(){            console.log("Hook getVipType() method!Origin result=",this.getVipType())            return 2;        }        var baseFragment=Java.use("com.luyun.simpleaccout.ui.fragment.BaseFragment")        baseFragment.isVip.implementation=function(){            console.log("Hook BaseFragment isVip() Succeeded!Origin result=",this.isVip());            return true;        }        baseFragment.getVipType.implementation=function(){            console.log("Hook BaseFragment getVipType() Succeeded!Origin result=",this.getVipType())            return 2;        }        var splashActivity=Java.use("com.luyun.simpleaccout.ui.SplashActivity");        splashActivity.isVip.implementation=function(){            console.log("Hook SplashActivity isVip() Succeeded!Origin result=",this.isVip());            return true;        }        var accountWidgetProvider=Java.use("com.luyun.simpleaccout.provider.AccountWidgetProvider")        accountWidgetProvider.isVip.implementation=function(){            console.log("Hook AccountWidgetProvider isVip() Succeeded!Origin result=",this.isVip());            return true;        }    })}setTimeout(main,500)

六. 效果演示

Hook成功,并且是永久会员

安卓逆向 -- FridaHook破解某记账VIP

vip的导出账本功能正常使用

安卓逆向 -- FridaHook破解某记账VIP

本文内容来自网络,如有侵权请联系删除

安卓逆向 -- FridaHook破解某记账VIP

原文始发于微信公众号(逆向有你):安卓逆向 -- FridaHook破解某记账VIP

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月19日01:57:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向 -- FridaHook破解某记账VIPhttps://cn-sec.com/archives/3181812.html

发表评论

匿名网友 填写信息