返回列表 发新帖

【逆向实战】绕过某app的so签名校验

  [复制链接]

12

主题

348

回帖

1219

积分

高中生

Rank: 4

金币
815
好评
5
信誉
100

考神MT论坛最佳新人MT论坛帅哥MT论坛新人

发表于 2025-10-24 15:16:26 | 显示全部楼层 | 阅读模式  来自 贵州
本帖最后由 Philia114514 于 2025-10-24 15:16 编辑

基于上次发的帖子(传送门),wakeup课程表绕过frida检测后继续分析,想尝试抓包,但是发送验证码失败。排除我们修改so的影响,用原包重签名,发现也发送不了验证码,可以确定是签名校验了。
应用应该是将正确的签名打包一起发送给服务器校验,校验失败导致验证码发送失败,所以,想hook出正确签名,必须拿原包来进行hook。
起初我觉得行不通,不过发现签名校验是在frida校验前完成的,所以依然可以hook到关键信息。
下载链接:包含过frida检测版,js脚本,一键去签+过frida检测版,原包  点这里

1.定位进入so层分析
直接去jadx搜索packageinfo,signature等等字符串太慢,搜索结果出来的少的几十多的几百上千。所以选择hook android.app.ApplicationPackageManager再打印堆栈就能输出调用签名的地方。查看堆栈,发现调用来自nativeSetToken方法
     
进入jadx找到方法,你会发现这里没告诉你,这个方法从哪个so加载来的
   
定位方法也很简单,直接hook registernatives 就能得出所有动态注册方法的信息,为什么?它里面有一个结构体数组,包含着所有动态注册函数,每一个java层的动态注册函数,在      这里都有着一一对应的so函数,这样就建立起了一张映射表,我们hook得到映射表信息就能找出对应的so函数在哪
    typedef struct {
    const char* name;      // Java 方法的名字,例如 "nativeMethod"
    const char* signature; // Java 方法的签名,例如 "()V" 或 "(Ljava/lang/String;)I"
    void*       fnPtr;     // 指向对应的 C/C++ 函数的指针
     } JNINativeMethod;
     找到了,位于 libbaseutil.so,地址0x128c
     
进入函数,反编译得到c代码。可以看到63行使用了签名,取了md5值,但是签名是在哪个方法返回的呢?往上查看,发现大多为jni函数和c库函数,只有开头的29行init方法最可疑
     
进入init,发现我们找的签名校验就在里面,通过getAndroidSignatures(env, thiz, context)方法取签名,点击查看方法,正在使用jni函数来获取签名。我们只要安装原包,hook出    返回值就能得出正确签名。
            



其实还没完,回到nativeSetToken。仔细看,在获取正确签名(v19)后,后面64行还有一个if 进行校验,如果失败,还是会跳转到失败分支(LABEL_6)。通过hook,发现还有其它方法调用strcmp,所以不能直接将这个方法返回0,如何确定是我们这个签名的比较?很简单,hook crymd5,当传入的参数是我们返回的签名时,结果v19即为正确md5值。再hook strcmp,当传入参数有正确的md5值时,返回0即可绕过
     


2.安装过frida检测版尝试,进入java层分析
现在,我们得到了正确的签名,绕过了strcmp的比较,编写js脚本,安装过frida版本进行测试。失败了,验证码发不出去。
多次尝试,发现签名是替换成功了,但是strcmp没反应,它应该要输出Strcmp replace successed 才对,日志也可以看出,找到了strcmp的地址

我怀疑是过frida检测版没有调用nativeSetToken方法,进行java层hook nativeSetToken,多次尝试发现没输出

那过frida检测版是去哪找的签名?再hook了一下PackageManager,发现过frida检测版,调用签名的方法是nativeInitBaseUtil,和nativeSetToken方法来自一个类(图2)。
那么肯定是它们的上层调用决定的,查看上层调用方法,都来自同一个叫大写o小写o还有0的混淆方法。nativeInitBaseUtil是签名生成器,当OooO0O02和OooO0O03都为空时开始签名,签名后存入本地。nativeSetToken是签名校验器,当OooO0O02或OooO0O03有值时进行校验。

为什么失败?我们目前安装的是过frida检测版本,不是原版签名,打开时调用nativeInitBaseUtil生成签名,但是生成不了有效签名,生成不了意味着根本不会调用nativeSetToken来验证,所以验证码发送失败。
影响路径的关键是OooO0O02和OooO0O03的值,hook if里面的判断,发现原包和过frida检测版,返回值都为true,所以不可能走else里面的代码
那么目标明显,安装原包,hook这个方法  OooOO0(LibPreference.KEY_ANTISPAM_SIGN_B),可以得出正确的signA和signB字符串,进行hook替换即可。




3.整合js脚本,用过frida检测版进行测试
这里写好了js脚本,放到了上面的链接中。发送验证码成功




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已有2人评分好评 金币 理由
xuti + 1 + 1 很给力!
billme2017 + 1 + 1

查看全部评分 总评分:好评 +2  金币 +2 

回复

使用道具 举报

123

主题

3512

回帖

1万

积分

博士生

●一只菜鸡●

Rank: 7Rank: 7Rank: 7

金币
3509
好评
85
信誉
122

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员

发表于 2025-10-24 15:17:10 来自手机  | 显示全部楼层  来自 辽宁
干货收藏
回复

使用道具 举报

10

主题

1795

回帖

8289

积分

硕士生

Rank: 6Rank: 6

金币
3438
好评
0
信誉
106
发表于 2025-10-24 15:26:18 | 显示全部楼层  来自 山东
看看教程
回复

使用道具 举报

688

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
3411
好评
164
信誉
119

考神MT论坛新人MT论坛活跃会员MT论坛帅哥MT论坛灌水老大MT论坛侠客MT论坛最佳新人

发表于 2025-10-24 15:29:42 来自手机  | 显示全部楼层  来自 中国
看看
回复

使用道具 举报

21

主题

4591

回帖

1万

积分

博士生

论坛小虾米

Rank: 7Rank: 7Rank: 7

金币
943
好评
2
信誉
100

考神

发表于 2025-10-24 15:30:02 来自手机  | 显示全部楼层  来自 河南
大佬厉害
回复

使用道具 举报

9

主题

2688

回帖

1万

积分

博士生

WZTong

Rank: 7Rank: 7Rank: 7

金币
2725
好评
42
信誉
476

MT论坛最佳新人MT论坛新人考神MT论坛帅哥

发表于 2025-10-24 15:31:54 来自手机  | 显示全部楼层  来自 四川
本帖最后由 WZTong 于 2025-10-24 15:32 编辑

Wakeup课程表?人家不是自觉购买类型的嘛,你昧着良心骗他“我已购买”人家好像都让你直接用?破解干嘛

补:看了看隐藏原来理解错了,帖子质量不错
回复

使用道具 举报

4

主题

407

回帖

1318

积分

高中生

Rank: 4

金币
97
好评
0
信誉
100
发表于 2025-10-24 15:32:11 来自手机  | 显示全部楼层  来自 重庆
看看
回复

使用道具 举报

124

主题

4803

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1191
好评
19
信誉
149

MT论坛最佳新人考神

发表于 2025-10-24 15:37:17 来自手机  | 显示全部楼层  来自 山东
看看隐藏
回复

使用道具 举报

9

主题

5716

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
8936
好评
0
信誉
102

MT论坛最佳新人MT论坛帅哥考神MT论坛新人

发表于 2025-10-24 15:38:10 来自手机  | 显示全部楼层  来自 山东
查看隐藏
回复

使用道具 举报

229

主题

2232

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
3995
好评
29
信誉
106
发表于 2025-10-24 15:38:13 来自手机  | 显示全部楼层  来自 四川
学习学习
回复

使用道具 举报

8

主题

1151

回帖

4249

积分

大学生

Rank: 5Rank: 5

金币
1102
好评
8
信誉
117
发表于 2025-10-24 15:39:49 来自手机  | 显示全部楼层  来自 浙江
学习
回复

使用道具 举报

2

主题

4507

回帖

1万

积分

禁止访问

iKUN

金币
1214
好评
16
信誉
111
发表于 2025-10-24 15:40:32 来自手机  | 显示全部楼层  来自 广西
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
6870
好评
1
信誉
100
发表于 2025-10-24 15:43:55 来自手机  | 显示全部楼层  来自 北京
看下隐藏
回复

使用道具 举报

12

主题

2303

回帖

7930

积分

硕士生

Rank: 6Rank: 6

金币
4376
好评
1
信誉
100

考神MT论坛帅哥

发表于 2025-10-24 15:46:49 来自手机  | 显示全部楼层  来自 广东
支持一下
回复

使用道具 举报

19

主题

3753

回帖

9550

积分

硕士生

Rank: 6Rank: 6

金币
1514
好评
21
信誉
143
发表于 2025-10-24 15:46:51 来自手机  | 显示全部楼层  来自 广西
感谢分享
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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