大模型对我而言,最重要的是学习效率的提升,因此免费的大模型资源对学习者来说很有性价比;
本文采用:
VScode+通义灵码
如果工作需要的话还是建议:
Cursor+ChatGPT 5.1/Gemini 3 Pro
目录
idapromcp333是IDA Pro MCP智能逆向分析平台的增强版,基于mrexodia/ida-pro-mcp二次开发。该工具通过MCP(Model Context Protocol)协议将IDA Pro与各类AI助手(如通义灵码、Cursor、Cline等)无缝集成,实现全自动智能化的二进制逆向分析。
核心功能:
JEB MCP是为JEB Pro反编译器开发的MCP服务器插件,专门用于APK逆向工程。它允许AI助手通过自然语言指令调用JEB的强大反编译功能,实现Android应用的智能化分析。
核心功能:
Small Detector是一款专为检验Android应用签名校验机制强度设计的安全检测工具。该APK通过模拟真实攻击场景,对目标应用的签名检测逻辑进行压力测试,帮助开发者评估其防护方案的有效性。
样本链接:https://bbs.kanxue.com/thread-288235.htm
核心检测维度:
本报告将针对以上三种检测机制进行深度技术分析,并提供相应的Frida绕过方案。
随便打包查看界面如下:
使用ai编写的脚本hook后界面如下

RootCheck、HookCheck、SignatureCheck检测机制分析与绕过方案
# RootCheck类完整分析报告
## 类概述
RootCheck类是该Android应用中负责检测设备是否已root的核心类。该类通过多种检测手段来判断设备的root状态,是应用安全防护体系的重要组成部分。
## 类结构信息
### 包名和导入
```java
package io.calvin.det.work;
```
### 类定义
```java
public final class RootCheck
```
### 主要字段
- `PKG_RE`: Pattern类型,用于匹配包名的正则表达式
- `ROOT_BINARIES`: String数组,存储常见的root二进制文件路径
- `message`: String类型,存储检测结果消息
- `sb`: StringBuffer类型,用于构建消息字符串
- `status`: boolean类型,表示检测状态
## 方法详细分析
### 1. is_system_rw() 方法
- **类型**: private final native boolean
- **功能**: 检测/system分区是否以读写模式挂载
- **检测原理**: 在标准Android系统中,/system分区通常以只读模式挂载以确保系统安全。如果该分区被重新挂载为读写模式,可能意味着设备已被root。
- **技术实现**: 通过读取/proc/mounts文件或其他系统文件检查/system分区的挂载选项。
### 2. isFileExists(String) 方法
- **类型**: private final native boolean
- **功能**: 检查指定路径的文件是否存在
- **检测原理**: 检查系统中是否存在常见的root工具相关文件,如su二进制文件、Superuser应用等。
- **技术实现**: 接收文件路径作为参数,通过系统调用检查文件存在性。
### 3. checkBinary() 方法
- **类型**: private final native boolean
- **功能**: 检测root二进制文件
- **检测原理**: 检查系统关键目录中是否存在root相关的二进制文件。
- **技术实现**: 遍历预定义的root二进制文件路径列表,检查文件是否存在。
### 4. checkMounts() 方法
- **类型**: private final native boolean
- **功能**: 检测文件系统挂载点状态
- **检测原理**: 检查关键系统目录的挂载状态,判断是否存在异常挂载。
- **技术实现**: 通过系统调用检查挂载点信息。
### 5. isDeviceRooted(Context) 方法
- **类型**: public final native boolean
- **功能**: 综合判断设备是否已root
- **检测原理**: 整合多种检测方法的结果,给出最终的root检测结论。
- **技术实现**: 调用其他检测方法,综合评估设备root状态。
### 6. checkProp() 方法
- **类型**: private final native boolean
- **功能**: 检查系统属性
- **检测原理**: 检查系统属性中是否包含root相关的标识。
### 7. checkHiddenApps(Context) 方法
- **类型**: private final native boolean
- **功能**: 检查隐藏应用
- **检测原理**: 检测是否存在隐藏的root相关应用。
### 8. getProp(String) 方法
- **类型**: public final native String
- **功能**: 获取系统属性值
- **检测原理**: 通过系统API获取指定属性的值。
### 9. execShell(String) 方法
- **类型**: private final native List<String>
- **功能**: 执行shell命令
- **检测原理**: 通过执行shell命令来检测root环境。
### 10. getMessage() 方法
- **类型**: public final native String
- **功能**: 获取检测结果消息
- **检测原理**: 返回最近一次检测的结果消息。
## Native层实现分析
通过IDA Pro分析,RootCheck类的native方法具有以下特点:
1. **代码混淆**: 大量使用控制流混淆和算术混淆技术
2. **间接调用**: 通过复杂的地址计算实现函数调用
3. **栈保护**: 使用TPIDR_EL0寄存器实现栈保护机制
4. **标准库调用**: 调用memset等标准库函数进行内存操作
# HookCheck 类分析报告
## 1. 方法基本信息
### 1.1 Java_io_calvin_det_work_HookCheck_hookCheck
- **地址**: 0x00000000000C25B8
- **大小**: 0xa30 (2608字节)
- **功能推测**: 检测设备是否被Hook框架劫持,如Xposed、Substrate等
- **反编译代码分析**:
- 函数初始化了大量的局部变量和字符串资源
- 调用了多个系统级API进行检测
- 最终返回检测结果
### 1.2 Java_io_calvin_det_work_HookCheck_svcHookCheck
- **地址**: 0x00000000000C8384
- **大小**: 0x64 (100字节)
- **功能推测**: 通过系统调用(SVC)方式检测Hook框架
- **反编译代码分析**:
- 直接调用底层函数进行检测
- 返回值与1进行按位与操作,返回布尔值
## 2. 关键Frida Hook信息
### 2.1 Hook地址
- hookCheck方法: 0xc25b8
- svcHookCheck方法: 0xc8384
### 2.2 调用方式
- hookCheck: Java层通过JNI调用Native函数`Java_io_calvin_det_work_HookCheck_hookCheck`
- svcHookCheck: Java层通过JNI调用Native函数`Java_io_calvin_det_work_HookCheck_svcHookCheck`
### 2.3 绕过方法
- 对于hookCheck方法,可以通过拦截其返回值并始终返回0或空字符串来绕过
- 对于svcHookCheck方法,可以通过拦截其返回值并始终返回false(0)来绕过
## 3. 分析总结
HookCheck类主要用于检测设备上是否存在Hook框架,它采用了两种不同的检测方式:
1. 基于常规API调用的检测(`hookCheck`)
2. 基于系统调用的检测(`svcHookCheck`)
[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!
最后于 2025-12-8 21:27
被审判者虔诚编辑
,原因: 修改内容