返回列表 发新帖

【原创教程】Blurrr手撕签名篇(二)

  [复制链接]

46

主题

2704

回帖

1万

积分

博士生

听冬宝宝

Rank: 7Rank: 7Rank: 7

金币
4089
好评
91
信誉
151

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

QQ
发表于 2025-7-12 23:42:31 来自手机  | 显示全部楼层 | 阅读模式  来自 贵州
本帖最后由 不熬夜的听冬酱 于 2025-7-13 01:06 编辑

前 言
拖了好久了,今天终于想起来去研究了下。

教程前篇:https://bbs.binmt.cc/thread-152183-1-1.html

这篇也是重新分析的改法,和之前改的方法完全不一样
版本最新版(理论通杀)

准备好瓜子,开讲啦!


教 程 开 始

首先我们定位到导致闪退的两个so文件:
- libunity-interface.so前篇
- libns.so本篇主角

我们搜索到相关的方法,可以看到只有一个


因为在so层,我们直接打开ida大牛牛工具并搜索此方法。


习惯性的F5转伪C
分析得知:
v24等于一个调用函数(v26)。
接着又进行比较,且最后把v26返回的结果给v24,也就是说,最终的返回值就是sub_5B7F0(v26)函数的返回值。


小总结:这个方法可能是一个总处理方法
实际的签名校验应该是在图中的 sub_5B7F0(v26) 函数。

这里衍生了一个修改方法
直接给这个方法返回1也可以,跳过BL调用就没有返回的值了,手动给他返回1即检测通过。

我们返回前面,进入真的签名校验函数


滑到最后可以看到相关的检测失败的字眼
因此我们得去左边的那个正常结束框


还是习惯性的转JVAV看看(F5伪C
关键伪C代码:
  1. LABEL_72:
  2.     v57 = 1;
  3.     goto LABEL_73;
  4.   }
  5.   if ( !v37 )
  6.     goto LABEL_72;
  7.   v49 = memcmp(v45, v46, v37);
  8.   v34 = a1;
  9.   if ( !v49 )
  10.     goto LABEL_72;
  11. LABEL_54:
  12.   v50 = v63;
  13.   if ( (v62 & 1) == 0 )
  14.     v50 = (unsigned __int64)(unsigned __int8)v62 >> 1;
  15.   if ( v37 != v50 )
  16.   {
  17.     v57 = 0;
  18.     goto LABEL_73;
  19.   }
  20.   if ( (v35 & 1) != 0 )
  21.     v51 = (const void *)*((_QWORD *)v34 + 2);
  22.   else
  23.     v51 = v34 + 1;
  24.   if ( (v62 & 1) != 0 )
  25.     v52 = (unsigned __int8 *)v64;
  26.   else
  27.     v52 = (unsigned __int8 *)&v62 + 1;
  28.   if ( (v35 & 1) != 0 )
  29.   {
  30.     if ( !v37 )
  31.       goto LABEL_72;
  32.     v57 = memcmp(v51, v52, v37) == 0;
  33. LABEL_73:
  34.     v53 = v60;
  35.     goto LABEL_74;
  36.   }
  37.   if ( !v37 )
  38.     goto LABEL_72;
  39.   v53 = v60;
  40.   v54 = v34 + 1;
  41.   do
  42.   {
  43.     v55 = *v54;
  44.     v56 = *v52;
  45.     v57 = v55 == v56;
  46.     if ( v55 != v56 )
  47.       break;
  48.     --v36;
  49.     ++v54;
  50.     ++v52;
  51.   }
  52.   while ( v36 );
  53. LABEL_74:
  54.   if ( (v62 & 1) != 0 )
  55.     operator delete(v64);
  56.   if ( v65 )
  57.   {
  58.     dest = v65;
  59.     operator delete(v65);
  60.   }
  61.   operator delete(v25);
  62.   operator delete(v24);
  63.   operator delete(v23);
  64.   if ( (v68 & 1) != 0 )
  65.     operator delete(j);
  66.   if ( v71 )
  67.   {
  68.     v72 = v71;
  69.     operator delete(v71);
  70.   }
  71.   operator delete(v14);
  72.   operator delete(v13);
  73.   operator delete(v12);
  74.   if ( (v74 & 1) != 0 )
  75.     operator delete(i);
  76.   if ( v77 )
  77.   {
  78.     v78 = v77;
  79.     operator delete(v77);
  80.   }
  81.   operator delete(v59);
  82.   operator delete(v53);
  83.   operator delete(v1);
  84.   return v57;
  85. }
复制代码


通过分析得知,
该方法通过多段匹配原始签名的方式
大概是三个(v74, v68, v62)签名,最后返回v57的值。
回顾下,原来的函数ns的返回值是v24,而v24的值来自于v26,且v26又等于sub_5B7F0这个方法。

我们就不上他的套,直接跳过多段匹配
给他提前结束并返回1即可。

这里衍生了一个修改方法
直接从前面跳转到最后面RET框然后并手动返回1即可。


这种改法可以看成smali里面的清空代码+返回1

教 程 结 束


还是根据陈玉京二愣子的发现,ns这个是个整个签名校验文件
也就是说这个文件是可以被删除的

可以直接在java层清空ns方法并返回1即可正常工作。
这样就可以删掉libns.so文件哦
(来自群友,之前版本有效,新版未测试,可能有未知的bug)

请结合两个文件一起塞回软件里面才有效果谢谢,别像人机一样跑来问我没效果

就酱紫,拜拜૮₍ ˶•ᴗ•˶₎ა

本帖子中包含更多资源

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

x
已有2人评分好评 金币 理由
青春向上 + 1 print("感谢分享");
氵衮 + 1 + 1

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

回复

使用道具 举报

10

主题

3705

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5021
好评
2
信誉
112

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

发表于 2025-7-12 23:43:18 来自手机  | 显示全部楼层  来自 福建
感谢分享
回复

使用道具 举报

0

主题

7273

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
2246
好评
8
信誉
124

考神

发表于 2025-7-12 23:47:45 来自手机  | 显示全部楼层  来自 广东
学习
回复

使用道具 举报

43

主题

2043

回帖

5540

积分

硕士生

喵~

Rank: 6Rank: 6

金币
856
好评
7
信誉
103

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

QQ
发表于 2025-7-12 23:50:29 来自手机  | 显示全部楼层  来自 广西
看看大佬分享
回复

使用道具 举报

134

主题

3460

回帖

1万

积分

博士生

无敌最俊朗

Rank: 7Rank: 7Rank: 7

金币
3010
好评
49
信誉
105
发表于 2025-7-12 23:51:29 来自手机  | 显示全部楼层  来自 四川
看看隐藏
回复

使用道具 举报

56

主题

8410

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4702
好评
28
信誉
114

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

发表于 2025-7-12 23:53:38 来自手机  | 显示全部楼层  来自 福建
看看隐藏
回复

使用道具 举报

30

主题

482

回帖

2245

积分

大学生

Rank: 5Rank: 5

金币
628
好评
0
信誉
100
发表于 2025-7-12 23:54:03 来自手机  | 显示全部楼层  来自 浙江
看看大佬
回复

使用道具 举报

2

主题

4507

回帖

1万

积分

禁止访问

iKUN

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

使用道具 举报

17

主题

6294

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2844
好评
6
信誉
100

考神

发表于 2025-7-12 23:54:51 来自手机  | 显示全部楼层  来自 山东
看看隐藏
回复

使用道具 举报

5

主题

1万

回帖

3万

积分

博士后

萌新

Rank: 8Rank: 8

金币
3419
好评
51
信誉
101

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

发表于 2025-7-13 00:00:33 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

0

主题

3820

回帖

9826

积分

硕士生

Rank: 6Rank: 6

金币
8809
好评
0
信誉
127

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

发表于 2025-7-13 00:00:59 来自手机  | 显示全部楼层  来自 河南
感谢分享
回复

使用道具 举报

1

主题

6029

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
8129
好评
0
信誉
100
发表于 2025-7-13 00:01:10 来自手机  | 显示全部楼层  来自 江苏–无锡–江阴
感谢分享,学习
回复

使用道具 举报

23

主题

1845

回帖

5688

积分

硕士生

Rank: 6Rank: 6

金币
3763
好评
1
信誉
101
QQ
发表于 2025-7-13 00:01:59 来自手机  | 显示全部楼层  来自 浙江
看看
回复

使用道具 举报

1

主题

6559

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
8715
好评
3
信誉
100
发表于 2025-7-13 00:08:09 来自手机  | 显示全部楼层  来自 湖北
感谢大佬分享。
回复

使用道具 举报

18

主题

4876

回帖

1万

积分

博士生

MW

Rank: 7Rank: 7Rank: 7

金币
2516
好评
2
信誉
100

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

发表于 2025-7-13 00:09:15 来自手机  | 显示全部楼层  来自 新疆
感谢分享,看看隐藏
回复

使用道具 举报

发表回复

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

本版积分规则

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