cydia java_使用Cydia Substrate Hook Android Java世界

本文介绍了如何利用Cydia Substrate Hook技术在Android环境中进行便捷的HOOK操作,详细讲解了手机端配置步骤、测试代码编写时的注意事项,并提供了错误解决方案。通过示例代码展示了如何修改Android资源颜色的方法。
摘要由CSDN通过智能技术生成

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

后来搜到Cydia Substrate,看了几篇文章,进入官网查看了一下文档,简直是神器,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模拟器,重启速度太快了)

三、效果图

f6d701e5b24e4e64f46d4877eebbc71d.png

四、附件

Manifest文件

Java文件

packagecom.example.cydiahookjava;importjava.lang.reflect.Method;importcom.saurik.substrate.MS;public classMain {static voidinitialize() {

MS.hookClassLoad("android.content.res.Resources", newMS.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 = newMS.MethodPointer();

MS.hookMethod(resources, getColor,newMS.MethodHook() {public Object invoked(Object resources, Object... args) throwsThrowable {//先调用原函数

int color =(Integer) old.invoke(resources, args);//再修改返回值

return color & ~0x0000ff00 | 0x00ff0000;

}

}, old);

}

}

});

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值