吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1805|回复: 20
上一主题 下一主题
收起左侧

[Android 原创] 安卓逆向新手关于某运动健康app的脱壳修复(未完成)

[复制链接]
跳转到指定楼层
楼主
220e285 发表于 2025-12-19 21:50 回帖奖励
首先,这个app有壳,mt自带的检测表示是三个数字的加固

方法1:使用frida-dexdump -U -f 包名 来脱壳,然后就一直卡在这个界面,gg

方法2:使用小黑盒脱壳,gg

方法3:在网上找资料下了一个DITOR(好像是b站下的忘了,大概看了下好像也是基于frida去脱壳的),给我脱下来了,一共有10个dex文件,有一个是跟原app一样的dex要删掉,还有一个是壳dex(有stub)也要删掉,然后去xml中找到android:icon下面的android:name那一行删掉,因为dex中没有入口,修复脱出来的dex,添加进原app覆盖即可。



DITOR的方法
Java.perform(function () {
    var class_name = "请输入类名"
    var method_name = "请输入方法名"
    var log_path = undefined
    function frida_hook(targetClass,targetMethod) {
        var hook = Java.classFactory.use(targetClass);
            hook.targetMethod.overload("请输入参数类型").implementation = function() {
            //print stack trice
            var bt = Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new());
            write("nBacktrace:n" + bt);
            //please start your creation↓↓↓
            var retval = this.targetMethod.apply(this, arguments);
            return retval;
        }
    } 
      function write(str){
        if(log_path == undefined) log_path = '/sdcard/'+ method_name + '.txt'
        console.log(str)
        var file = new File(log_path,'a')
        if(file != undefined){
        file.write(str + '\n')
        file.flush()
        file.close()
    }
  }
        var Application = Java.use("android.app.Application");
        console.log("hook Application...");
        Application.attach.overload("android.content.Context").implementation = function(context){
        console.log("hooked attachBaseContext...");
        var result = this.attachBaseContext(context);
        Java.classFactory.loader = context.getClassLoader();
        frida_hook(class_name,method_name);
        return result;
       }
});
">然后就是签名校验,mt提示是V1+V2,直接用mt去签闪退,授权算法助手查看日志,定位代码,卡这了




这是它的vip方法,就是用当前方法主要功能:处理VIP用户状态更新和界面刷新。下次试试运行中用frida去hook这个方法

[Java] 纯文本查看 复制代码
public Object invoke(Object obj) {
// 调用具体类型的方法
invoke((UserResp) obj);
// 返回Kotlin单位类型(相当于void)
return Unit.INSTANCE;
}

public final void invoke(UserResp userResp) { // 检查userResp参数不为空 Intrinsics.checkNotNullParameter(userResp, "result");

// 访问外部类的isVipUser属性
CourseDetailActivity.access$isVipUser$p(this.this$0);

// 获取视图绑定对象并触发智能刷新布局的自动刷新
CourseDetailActivity.access$getViewBinding(this.this$0).smartRefreshLayout.autoRefresh();

// 根据响应数据设置VIP用户状态
CourseDetailActivity.access$setVipUser$p(this.this$0, userResp.isVip());

}

}

小tips:关于在物理机用adb连接模拟器时,输入su有时候会提示permission denied,打开面具,从下面打开超级用户授权就可以了

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
芽衣 + 1 + 1 用心讨论,共获提升!
xiaoyao888 + 1 + 1 我很赞同!
buluo533 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

推荐
lxxyh 发表于 2025-12-23 08:54
数字壳基本上都是oncreat抽函数的,你直接还原入口肯定闪退,不是专业的手动还原就是看运气,网上部分教程可以手工过数字壳。工具小子的话就老老实实用热修复或者可以过签360的工具。
沙发
a86943413 发表于 2025-12-19 21:58
3#
DLY3793 发表于 2025-12-19 23:12
4#
tanghailong 发表于 2025-12-20 07:02
学习观摩
5#
dork 发表于 2025-12-20 07:21
一是脱壳方法不对,二是你对数字壳是真不了解呀,你这连四分之一的工作量都没有。。
6#
it7333 发表于 2025-12-20 08:20
学习一下思路
7#
laoser 发表于 2025-12-20 08:28
非常不错的学习思路
8#
xiaoyao888 发表于 2025-12-20 09:05
谢谢楼主分享,学习下
9#
asaazx 发表于 2025-12-20 09:49

学习一下思路
10#
asaazx 发表于 2025-12-20 09:50

谢谢楼主分享,学习下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-12-25 14:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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