12下一页
返回列表 发新帖

防止被MT一键去除签名校验

[复制链接]

1

主题

7

帖子

20

积分

小学生

Rank: 2

金币
7
好评
1
贡献
0
发表于 2020-7-30 18:56:11 来自手机  | 显示全部楼层 | 阅读模式
本帖最后由 Linx 于 2020-7-31 02:09 编辑

使用MT一键去除签名校验功能后,会替换掉软件原来的Application为HookApplication,并在super.attachBaseContext(context)之前hook掉ActivityThread的sPackageManager对象,并把sPackageManager替换为接口IPackageManager的动态代理,之后在每次调用PackageManager的方法时都会调用代理的
Object invoke(Object proxy, Method method, Object[] args) 方法,当要引用的方法名为 getPackageInfo 获取自身签名数据时,在返回PackageInfo之前,把signatures替换为原来的软件签名数据,以此来实现去除应用签名校验

既然知道了工作原理,就知道如何解决了。重置掉被代理的sPackageManager就行,总代码仅30多行,非常简洁!
  1. /**
  2.          * 通过重置PackageManager防止getPackageInfo方法被代理设置
  3.          * 亲测MT管理器(当前2.9.1)的一键去签名校验(包括加强版)无效!
  4.          * 当然如果别人反编译把代码删除的话那就没办法了
  5.          */
  6.         public static void resetPackageManager(Context baseContext) {
  7.                 try {
  8.                         //重置全局sPackageManager对象
  9.                         reset1: {
  10.                                 Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
  11.                                 Field sPackageManagerField = activityThreadClass.getDeclaredField("sPackageManager");
  12.                                 sPackageManagerField.setAccessible(true);
  13.                                 sPackageManagerField.set(activityThreadClass, null);
  14.                                 //因为上面已经把sPackageManager变量设置为null了,调用这个方法重新赋值
  15.                                 Method getPackageManagerMethod=activityThreadClass.getDeclaredMethod("getPackageManager");
  16.                                 getPackageManagerMethod.setAccessible(true);
  17.                                 getPackageManagerMethod.invoke(activityThreadClass);
  18.                         }
  19.                         //重置当前上下文mPackageManager对象
  20.                         reset2: {
  21.                                 Class<?> baseContextClass=baseContext.getClass();
  22.                                 Field mPackageManagerField=baseContextClass.getDeclaredField("mPackageManager");
  23.                                 mPackageManagerField.setAccessible(true);
  24.                                 mPackageManagerField.set(baseContext, null);
  25.                                 //重新设置为已经重置好的sPackageManager
  26.                                 Method getPackageManagerMethod=baseContextClass.getDeclaredMethod("getPackageManager");
  27.                                 getPackageManagerMethod.setAccessible(true);
  28.                                 getPackageManagerMethod.invoke(baseContext);
  29.                         }
  30.                 } catch (Throwable e) {
  31.                         e.printStackTrace();
  32.                 }
  33.         }
复制代码

效果图:

源码及演示Apk:htt删除我ps://wwe.lanzous.com/i88XSf4ydmd

本帖子中包含更多资源

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

x
已有1人评分好评 金币 理由
cheat + 1 + 1 很给力!比我写的还好!

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

回复

使用道具 举报

71

主题

2833

帖子

1万

积分

版主

论坛萌新

Rank: 7Rank: 7Rank: 7

金币
3187
好评
143
贡献
1

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

QQ
发表于 2020-7-30 18:58:37 来自手机  | 显示全部楼层
最近怎么防护的帖子多起来了
回复

使用道具 举报

0

主题

225

帖子

481

积分

初中生

Rank: 3Rank: 3

金币
41
好评
0
贡献
0
发表于 2020-7-30 18:59:02 来自手机  | 显示全部楼层
感谢分享!
回复

使用道具 举报

50

主题

950

帖子

4862

积分

大学生

Rank: 5Rank: 5

金币
860
好评
65
贡献
0

MT论坛最佳新人MT论坛侠客

QQ
发表于 2020-7-30 19:05:45 来自手机  | 显示全部楼层
看来楼主非等闲之辈直接写crc32检验不就好了  然后再加固so ,不加固都行
回复

使用道具 举报

2

主题

314

帖子

1240

积分

高中生

啥也不是

Rank: 4

金币
266
好评
0
贡献
0
QQ
发表于 2020-7-30 19:06:14 来自手机  | 显示全部楼层
从哪个论坛上抄下来的估计是
回复

使用道具 举报

1

主题

7

帖子

20

积分

小学生

Rank: 2

金币
7
好评
1
贡献
0
发表于 2020-7-30 19:07:09 来自手机  | 显示全部楼层
CDD 发表于 2020-7-30 19:06
从哪个论坛上抄下来的估计是

你很懂哦
回复

使用道具 举报

1

主题

7

帖子

20

积分

小学生

Rank: 2

金币
7
好评
1
贡献
0
发表于 2020-7-30 19:08:32 来自手机  | 显示全部楼层
一滴 发表于 2020-7-30 19:05
看来楼主非等闲之辈直接写crc32检验不就好了  然后再加固so ,不加固都行 ...

主要是这种方法比较简单
回复

使用道具 举报

50

主题

950

帖子

4862

积分

大学生

Rank: 5Rank: 5

金币
860
好评
65
贡献
0

MT论坛最佳新人MT论坛侠客

QQ
发表于 2020-7-30 19:12:58 来自手机  | 显示全部楼层
Linx 发表于 2020-7-30 19:08
主要是这种方法比较简单

我觉得不简单 这种方法很好  ,不是一般汇编大神大神级都很难攻克。
回复

使用道具 举报

17

主题

642

帖子

2105

积分

大学生

Rank: 5Rank: 5

金币
254
好评
4
贡献
0

考神

发表于 2020-7-30 19:14:53 来自手机  | 显示全部楼层
回复

使用道具 举报

1

主题

7

帖子

20

积分

小学生

Rank: 2

金币
7
好评
1
贡献
0
发表于 2020-7-30 19:22:35 来自手机  | 显示全部楼层
一滴 发表于 2020-7-30 19:12
我觉得不简单 这种方法很好  ,不是一般汇编大神大神级都很难攻克。

你误解我意思了,指的是我贴子里的这个方法
回复

使用道具 举报

50

主题

950

帖子

4862

积分

大学生

Rank: 5Rank: 5

金币
860
好评
65
贡献
0

MT论坛最佳新人MT论坛侠客

QQ
发表于 2020-7-30 19:26:45 来自手机  | 显示全部楼层
Linx 发表于 2020-7-30 19:22
你误解我意思了,指的是我贴子里的这个方法

我就说嘛,我还以为你说我的方法比较简单,请人写crc也要花很多钱,很难攻克。
回复

使用道具 举报

68

主题

337

帖子

1512

积分

高中生

Rank: 4

金币
189
好评
6
贡献
0

考神

发表于 2020-7-30 19:32:58 | 显示全部楼层
讲真有很多写在native层的方法都调用getPackageManager.getPackageInfo这样的校验,楼主的帖子才是对症下药,治标治本,赞一下
回复

使用道具 举报

3

主题

504

帖子

1290

积分

高中生

Rank: 4

金币
502
好评
0
贡献
0
发表于 2020-7-30 19:33:17 来自手机  | 显示全部楼层
回复

使用道具 举报

35

主题

805

帖子

2512

积分

大学生

Rank: 5Rank: 5

金币
624
好评
0
贡献
0
发表于 2020-7-30 19:43:37 来自手机  | 显示全部楼层
谢谢分享
回复

使用道具 举报

6

主题

650

帖子

2041

积分

大学生

Rank: 5Rank: 5

金币
538
好评
6
贡献
0
发表于 2020-7-30 19:44:19 | 显示全部楼层
最近怎么防护的帖子多起来了
回复

使用道具 举报

发表回复

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

本版积分规则

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