吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9023|回复: 18
上一主题 下一主题
收起左侧

[Android 原创] 萌新初次上路之“薄荷记账”不完全破解--只为了使用暗夜模式

[复制链接]
跳转到指定楼层
楼主
skye231 发表于 2020-4-18 21:41 回帖奖励

前言

起步开始学习逆向破 x ,刚好想用薄荷记账(版本为:8.0.0)的暗夜模式,就拿它来开刀学习了。是在是菜,没有能够解锁全部vip功能(指纹解锁),但最后实现了打开暗夜模式,请各位大佬指教 ♂ 。

App 无壳,应该都是 java 层的东西?支付处理都能在 java 层找到。

思路

  1. 修改支付返回处的判断语句。
  2. 修改用户 vip 属性值

第一种方法尝试过,能成功提出购买成功,但未能解锁 vip 功能。最后是通过修改读取用户 vip 状态的函数返回值实现解锁 暗夜模式 。

过程

killer 打开搜索字符串 暗夜 ,在中文 xml 找到。因为软件支持多国语言版本,所以字符串都是通过一串数字去对应语言的xml表取值。搜索暗夜对应键 setting_skin_style_night 找到那一串数字。

搜索 0x7f0c046c 在 melandru.lonicera.n.f 中被调用,观察分析判断这个应该是用户选择主题模式的功能文件。查看这个类的交叉调用查看被谁调用,其中有一个是 melandru.lonicera.activity.setting.OptionActivity.S 这个应该是启动主题选择的入口。

private void S() {
    if(this.e == null) {
    this.e = new v(((Context)this));
    this.e.setTitle(0x7F0C046A);
    f[] v0 = f.values();
    int v1;
    for(v1 = 0; v1 < v0.length; ++v1) {
        this.e.a(v0[v1].a(this.getApplicationContext()),        new View$OnClickListener(v0, v1) {
        public void onClick(View arg2) {
        f v2 = this.a[this.b];
        if(v2 != this.c.r().c()) {
    if(v2 == f.b && !this.c.r().L()) {    
        melandru.lonicera.b.g(this.c);
        return;
        }
………(下面是调用主题选择功能)

重点是这个判断:if(v2 == f.b && !this.c.r().L()),前一个是无关的,关键是后面一个是返回用户 vip 状态的,当条件不满足时,就是调用melandru.lonicera.b.g(this.c);,这是一个购买 vip 的入口函数(为什么?有兴趣看后文失败的思路分析)。

虽然只是想使用暗黑,但是其他 vip 功能也挺香的,所以跟踪进去。发现这个 L 有两个判断,分析被调用的 M ,推断 M 应该是检查登录的,下面的 v0 应该是 vip 状态。按道理来说应该是修改用户 vip 状态的标志位,但是菜咯。就直接改 L 的返回值全为 1 。

public boolean L() {
        if(!this.M()) {
            return 0;
        }
        bu v0 = this.e().a();
        if(v0 == null) {
            return 0;
        }
        return v0.d;
    }
    public boolean M() {
        if(Long.compare(this.I(), 0) <= 0) {  // 是否登录
            return 0;
        }
        if(TextUtils.isEmpty(this.H())) {
            return 0;
        }
        return 1;
    }

重新打包测试,前后对比图:这 emmm 没差别??

成功过程到这里就结束了,下面是如何找支付函数的记录

成功过程到这里就结束了,下面是如何找支付函数的记录

成功过程到这里就结束了,下面是如何找支付函数的记录


monitor 监控app,然后打开购买界面,清空monitor logcat准备读取log。

点击立即购买,查看logcat记录发现调用的是melandru.lonicera.activity.vip.OrderActivity,使用支付宝SDK创建一个H5的支付页面。这款APP有分国内国外不同的支付函数入口,国内又有支付宝和微信。选择一类逆向,后续使用同一支付方式的实现方法比较简便。

melandru.lonicera.activity.vip 下面有个a类,通过比对类中的字符串判断是购买成功的弹窗处理类。a 在 OrderActivity 被 P 调用,然后对P跟踪最后会在 OrderActivity.onCreat 被调用。

前后将相关数据打包好后,M创建相关窗体页面,N 发起支付请求。

protected void onCreate(Bundle arg3) {
    super.onCreate(arg3);
    this.setContentView(0x7F0B00EA);  // order
    this.alipay = new melandru.lonicera.j.a(((BaseActivity)this));
    this.alipay.a(new d() {
        public void a() {
            OrderActivity.buySuccessTip(this.a);
        }
    });
    …………(省略wxpay)
        this.a(arg3);
    this.M();
    this.N();

在 N 里面最后将打包好的支付请求给到 this.alipay.a 跟踪到函数里面,找到处理返回支付结构 json 部分。支付宝支付成功返回值是9000。在函数里面也果然发现与 9000 比较的部分。

public void a(Map arg3) {
    if(arg3 != null) {
        Object v0 = arg3.get("resultStatus");
        Object v3 = arg3.get("result");
        if("9000".equals(v0)) {
            if(a.b(this.b) != null) {
                a.b(this.b).a();
            }

            a.b(this.b, ((String)v3));
        }
    }
}

对应修改后,可以弹窗购买成功,但实际上未解锁对应功能,因为我菜~~大佬指教。

尾巴

萌新上车,大佬指教 ♂ 。程序练手应该也是不错的?



原版apk:https://lanzouj.com/ibkp3mb

免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
onedai18 + 1 我很赞同!
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

推荐
 楼主| skye231 发表于 2020-4-19 01:00 |楼主
雨落惊鸿, 发表于 2020-4-18 21:57
服务器校验,改内购无效

应该是部分功能不单单进行本地验证,还进行了服务器验证。尝试再往深层逆向看看。
推荐
雨落惊鸿, 发表于 2020-4-19 08:54
skye231 发表于 2020-4-19 01:00
应该是部分功能不单单进行本地验证,还进行了服务器验证。尝试再往深层逆向看看。

可以尝试用黄鸟抓包
沙发
jiushi 发表于 2020-4-18 21:49
3#
雨落惊鸿, 发表于 2020-4-18 21:57
服务器校验,改内购无效
4#
rikka 发表于 2020-4-18 22:10
正好在用,顶一个
5#
bigbirdl 发表于 2020-4-18 22:36
本地显示购买成功,实际服务器上还是没有成功的。这样我感觉是否考虑抓包看看?
6#
523067000 发表于 2020-4-18 22:57
谢谢楼主分享了
7#
已默然 发表于 2020-4-18 23:13
牛逼,但是本地能用,网连就没啥了吧
8#
德德哈哈 发表于 2020-4-18 23:27
感谢楼主的分享
9#
lihongyiyx 发表于 2020-4-18 23:36
鼓励鼓励鼓励
10#
 楼主| skye231 发表于 2020-4-19 00:53 |楼主
已默然 发表于 2020-4-18 23:13
牛逼,但是本地能用,网连就没啥了吧

暗黑模式联网可用,webdev备份好像也可以,其他功能未测试
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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