吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 2534|回复: 7

[Android 原创] 检测App是否被动态代{过}{滤}理Hook,包括MT,Kstools爆破签名等

[复制链接]
LivedForward 发表于 2019-8-28 12:05
本帖最后由 LivedForward 于 2019-8-29 12:30 编辑

之前有在论坛发布过如何对抗Kstools以及MT管理器的增强版爆破签名校验

如果对Android Hook Service不了解可以先看看这篇文章:
https://yq.aliyun.com/articles/179857

原贴地址:
https://www.52pojie.cn/thread-1011337-1-1.html
https://www.52pojie.cn/thread-1014913-1-1.html
https://www.52pojie.cn/thread-1013895-1-1.html

我之前的思路总是一种逃避的对抗思维,Hook了某种获取签名信息的API,我就换一种方式,
然而方法是有限制的,我想起要主动反击,于是我想起主动检测API是否被Hook,网上查询资料也是几乎没有关于Android检测动态代{过}{滤}理自身Hook的资料.


有一点值得高兴的是:在JDK动态代{过}{滤}理里面,我们知道,只要是某个接口被代{过}{滤}理了,它继承于Proxy类,只要是采取动态代{过}{滤}理技术Hook自身APP的,被Hook掉的
API的父类就是Proxy,于是我们可以采取检测父类的方式来检测关键API是否被Hook.


此方法最适合启动时检测特定的API,因为可能我们自己APP内使用了代{过}{滤}理系统类增强系统功能.


示例:
检测当前APP PackageManager服务是否被Hook:

            Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
            Method currentActivityThreadMethod =
                            activityThreadClass.getDeclaredMethod("currentActivityThread");
            Object currentActivityThread = currentActivityThreadMethod.invoke(null);

            Field sPackageManagerField = activityThreadClass.getDeclaredField("sPackageManager");
            sPackageManagerField.setAccessible(true);
            Object sPackageManager = sPackageManagerField.get(currentActivityThread);   // 通过反射获取到当前APP的PackageManager服务对象

然后再获取其父类及名称即可.


测试APP:
检测APP的PackageManager服务是否被Hook,PackageManager接口管理APP相关信息,
包括签名信息,包名等,它的正常父类是Object,如果被动态代{过}{滤}理Hook,其父类必是Proxy.


链接: https://pan.baidu.com/s/1dA3yhcNanj5RwZGNMV-gcQ 提取码: jjq7


兼容测试APP(兼任部分难以兼容或闪退的机型):
链接: https://pan.baidu.com/s/1IHjL_yqrrD_e9Jbp0sH0Jg 提取码: 4e4x

Screenshot_2019-08-28-12-04-20-374_com.ysh.png

免费评分

参与人数 5吾爱币 +7 热心值 +5 收起 理由
FrienDer + 1 + 1 我很赞同!
涛之雨 + 3 + 1 用心讨论,共获提升!
戒酒的李白 + 1 + 1 我很赞同!
TIS有趣的灵魂 + 1 + 1 我很赞同!
klxn0-0 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

刘先森lc 发表于 2019-8-28 13:02
厉害厉害
涛之雨 发表于 2019-8-28 13:04
华为mate20 报道。。。
还是闪退。
另外
魅族16s也闪退(一个群里的同学)
HLD第一帅 发表于 2019-8-28 14:01
 楼主| LivedForward 发表于 2019-8-28 14:16
本帖最后由 LivedForward 于 2019-8-28 15:56 编辑
涛之雨 发表于 2019-8-28 13:04
华为mate20 报道。。。
还是闪退。
另外

已修复,已经上传兼容版
涛之雨 发表于 2019-8-28 14:56
LivedForward 发表于 2019-8-28 14:16
魅族16s已修复,已经上传兼容版

好了
谢谢大佬

Screenshot_20190828_145522_ash.checkhook.jpg
统列 发表于 2019-9-1 21:55
直接校验包md5 dex的md5 签名文件的md5不就行了。
破解project 发表于 2019-9-20 15:09
[Java] 纯文本查看 复制代码
            Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
            Method currentActivityThreadMethod =
                            activityThreadClass.getDeclaredMethod("currentActivityThread");
            Object currentActivityThread = currentActivityThreadMethod.invoke(null);
            Field sPackageManagerField = activityThreadClass.getDeclaredField("sPackageManager");
            sPackageManagerField.setAccessible(true);
            Object sPackageManager = sPackageManagerField.get(currentActivityThread);   // 通过反射获取到当前APP的PackageManager服务对象


论坛有代码高亮组件可以用的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:禁止回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2020-1-29 05:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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