cydia java_Cydia Substrate 使用

本文介绍了如何使用 Cydia Substrate 框架同时在 Java 和 Native 层进行 Hook 操作。首先讲解了 Cydia Substrate 的安装与初始化,接着展示了如何在 Java 层 Hook 系统颜色,最后详细阐述了如何在 Native 层 Hook Dalvik 的 DexFileParse 函数,用于内存 dump。文章提供了详细的代码示例和配置过程。
摘要由CSDN通过智能技术生成

前言

我们以前介绍过Xposed,这个只可以Hook java层,如果要hook native层就要使用InlineHook了,以前的文章都有提到。今天介绍一个既可以Hook java层又可以Hook native层的框架,就是Cydia Substrate。

环境

安装Cydia Substrate apk

使用adb install安装后,进入到app

1、点击Link Substrate Files

2、获取root权限

3、重启设备

如下图说明安装成功了

d4359acbe37c

image.png

java层Hook

创建项目后把so文件和jar文件拷贝到指定目录,jar添加进来

d4359acbe37c

image.png

新建一个Hook的入口类HookTest.java

HookTest.java

package com.example.cydiasubstratehook;

import java.lang.reflect.Method;

import android.util.Log;

import com.saurik.substrate.MS;

public class HookTest {

public static final String SHARK = "Shark";

/**

* substrate 初始化后的入口

*/

static void initialize() {

// Hook System Color

//先hook 类加载时

//参数一是类名 参数二是实现MS.ClassLoadHook的类

//在classLoaded中完成业务逻辑

MS.hookClassLoad("android.content.res.Resources",

new MS.ClassLoadHook() {

@SuppressWarnings({ "unchecked", "rawtypes" })

public void classLoaded(Class> resources) {

Method getColor;

try {

//从这个类获取getColor方法对象

getColor = resources.getMethod("getColor",

Integer.TYPE);

} catch (NoSuchMethodException e) {

getColor = null;

}

if (getColor != null) {

//保存原来的方法

final MS.MethodPointer old = new MS.MethodPointer();

//hook方法

MS.hookMethod(resources, getColor,

new MS.MethodHook() {

//hook方法的业务逻辑

public Object invoked(Object resources,

Object... args) {

try {

//调用原来的方法

int color = (Integer) old

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值