博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Cydia Substrate Hook Android Java世界
阅读量:6305 次
发布时间:2019-06-22

本文共 1748 字,大约阅读时间需要 5 分钟。

从来没接触过Android的HOOK,在看雪上找到了一篇HOOK 的文章,但是太复杂了,应该是本地环境问题,测试不成功。

后来搜到,看了几篇文章,进入官网查看了一下文档,简直是神器,HOOK过程简洁,总共就几个关键API,使用起来特别方便。

于是在blog记录一下。

一、手机端配置

1.手机必须Root,我这里使用的是模拟器。(安利一波Genymotion模拟器,太好用了)

2.下载cydiasubstrate APK。()

二、测试代码

使用。字少图多,我就不重述了。写下几个我遇到的错误:

1.新建安卓工程时不要默认添加的Activity。

2.Manifest文件application段的meta-data必须填写。

3.manifest节点需要填写package(官网没填写package,可能是eclipse版本问题,我装的eclipse默认填写了package,并且不可删除),主函数所在文件必须在这个package下,否则代码不会执行。

4.无论更新HOOK,还是卸载HOOK,最好都重启一下手机。(再次安利一波Genymotion模拟器,重启速度太快了)

三、效果图

四、附件

Manifest文件

Java文件

package com.example.cydiahookjava;import java.lang.reflect.Method;import com.saurik.substrate.MS;public class Main {    static void initialize() {        MS.hookClassLoad("android.content.res.Resources", new MS.ClassLoadHook() {            public void classLoaded(Class
resources) { Method getColor; try { getColor = resources.getMethod("getColor", Integer.TYPE); } catch (NoSuchMethodException e) { getColor = null; } if (getColor != null) { final MS.MethodPointer old = new MS.MethodPointer(); MS.hookMethod(resources, getColor, new MS.MethodHook() { public Object invoked(Object resources, Object... args) throws Throwable { //先调用原函数 int color = (Integer) old.invoke(resources, args); //再修改返回值 return color & ~0x0000ff00 | 0x00ff0000; } }, old); } } }); }}

转载于:https://www.cnblogs.com/Reyzal/p/5203238.html

你可能感兴趣的文章
Maven
查看>>
iOS 3DTouch
查看>>
在vue2.0中mock数据
查看>>
react-native 项目开发问题
查看>>
开发小技巧-mock
查看>>
java版b2b2c社交电商springcloud分布式微服务 (九)服务链路追踪(Spring Cloud Sleuth)...
查看>>
Android MultiDex简介
查看>>
简单了解ngrok
查看>>
JavaScript reduce() 方法和reduceRight() 方法
查看>>
ANDROID 系统下载
查看>>
清清楚楚地搭建MongoDB数据库(以搭建4.0.4版本的副本集为例)
查看>>
基于ARM的智能灯光控制系统(6)进程通信
查看>>
RHEL 6.0 vmware 安装之后初次网卡无法使用
查看>>
淘宝研发的针对 nginx 的文件合并模块-Nginx_concat_module
查看>>
java 对象排序
查看>>
bootstrap_无需整理
查看>>
kickstart自动安装系统
查看>>
Spring框架 - 数据访问 单元作业
查看>>
什么是隔行扫描?什么是逐行扫描?
查看>>
zabbix服务搭建(一)
查看>>