贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

cydia substrate(如何进行Android HOOK工具Cydia Substrate使用)

来源:网络转载 时间:2024-05-08 11:39:01

cydia substrate是一个代码修改平台。它可以修改任何主进程的代码,不管是用Java还是C/C++(native代码)编写的。而Xposed只支持 HOOK app_process中的java函数,因此Cydia Substrate是一款强大而实用的HOOK工具。

Substrate几个重要API介绍

MS.hookClassLoad

函数原型:voidhookClassLoad(Stringname,MS.ClassLoadHookhook);

该方法实现在指定的类被加载的时候发出通知。因为一个类可以在任何时候被加载,所以Substrate提供了一个方法用来检测用户感兴趣的类何时被加载。

参数

描述

name

包名+类名,使用java的.符号

hook

MS.ClassLoadHook的一个实例,当这个类被加载的时候,它的classLoaded 方法会被执行。

MS.hookMethod

该API允许开发者提供一个回调函数替换原来的方法,这个回调函数是一个实现了MS.MethodHook接口的对象,是一个典型的匿名内部类。它包含一个invoked函数。

函数原型:

voidhookMethod(Class_class,Membermember,MS.MethodHookhook,MS.Methodpointerold);voidhookMethod(Class_class,Membermember,MS.MethodAlterationalteration);

参数描述

(一)

参数

描述

_class

加载的目标类,为classLoaded传下来的类参数

member

通过反射得到的需要hook的方法(或构造函数). 注意:不能HOOK字段(在编译的时候会进行检测).

hook

MS.MethodHook的一个实例,其包含的invoked方法会被调用,用以代替member中的代码

(二)

参数

描述

_class

加载的目标类,为classLoaded传下来的类参数

member

通过反射得到的需要hook的方法(或构造函数). 注意:不能HOOK字段(在编译的时候会进行检测).

alteration

An instance ofMS.MethodAlterationwhose boxedinvokedmethod will be called instead ofmember. This instance will also be filled in using information from the original implementation, allowing you to useinvoketo call the original method implementation.

建议开发者使用第二种方式,这种方式使用起来简单并且很少出错,不需要一个单独的MS.MethodPointer类实例。

使用方法

下面以官网的一个实例来说明cydia substrate的使用方法。该实例是实现将多个接口组件颜色修改为紫罗兰色。

需要安装:http://www.cydiasubstrate.com/download/com.saurik.substrate.apk

步骤一:创建一个空的Android工程。由于创建的工程将以插件的形式被加载,所以不需要activity。将SDK中的substrate-api.jar复制到project/libs文件夹中。

步骤二:配置Manifest文件

(1)需要指定权限:cydia.permission.SUBSTRATE

(2)添加meta标签,name为cydia.permission.SUBSTRATE,value为下一步中创建的类名.Main

<manifestxmlns:android="http://schemas.android.com/apk/res/android"><application><meta-dataandroid:name="com.saurik.substrate.main"android:value=".Main"/></application><uses-permissionandroid:name="cydia.permission.SUBSTRATE"/></manifest>

步骤二:创建一个类,类名为Main。类中包含一个static方法initialize,当插件被加载的时候,该方法中的代码就会运行,完成一些必要的初始化工作。

importcom.saurik.substrate.MS;publicclassMain{staticvoidinitialize(){//...codetorunwhenextensionisloaded}}

步骤三:为了实现HOOK,达到修改目标类中的代码的目的,我们需要得到目标类的一个实例,如示例中的resources。

publicclassMain{staticvoidinitialize(){MS.hookClassLoad("android.content.res.Resources",newMS.ClassLoadHook(){publicvoidclassLoaded(Class<?>resources){//...codetomodifytheclasswhenloaded}});}}

步骤四:通过MS.MethodHook实例实现原代码的修改。

为了调用原来代码中的方法,我们需要创建一个MS.MethodPointer类的实例,它可以在任何时候运行原来的代码。

在这里我们通过对原代码中resources对象原始代码的调用和修改,将所有绿色修改成了紫罗兰色。

publicvoidclassLoaded(Class<?>resources){MethodgetColor;try{getColor=resources.getMethod("getColor",Integer.TYPE);}catch(NoSuchMethodexceptione){getColor=null;}if(getColor!=null){finalMS.MethodPointerold=newMS.MethodPointer();MS.hookMethod(resources,getColor,newMS.MethodHook(){publicObjectinvoked(Objectresources,Object...args)throwsThrowable{intcolor=(Integer)old.invoke(resources,args);returncolor&~0x0000ff00|0x00ff0000;}},old);}}

安装运行,重启系统后发现很多字体颜色都变了。如下图所示:

示例中MS.hookMethod的代码可以改成:

MS.hookMethod(resources,getColor,newMS.MethodAlteration<Resources,Integer>(){publicIntegerinvoked(Resourcesresources,Object...args)throwsThrowable{intcolor=invoke(resources,args);returncolor&~0x0000ff00|0x00ffee00;}});

短信监控实例

在下面的例子中我们实现了短信监听功能,将短信发送人、接收人以及短信内容打印出来:

1importjava.lang.reflect.Method;2importandroid.app.PendingIntent;3importandroid.util.Log;4importcom.saurik.substrate.MS;567publicclassMain{89staticvoidinitialize(){1011MS.hookClassLoad("android.telephony.SmsManager",newMS.ClassLoadHook(){121314@Override1516publicvoidclassLoaded(Class<?>SmsManager){1718//codetomodifytheclasswhenloaded1920MethodsendTextMessage;2122try{2324sendTextMessage=SmsManager.getMethod("sendTextMessage",2526newClass[]{String.class,String.class,String.class,PendingIntent.class,PendingIntent.class});272829}catch(NoSuchMethodExceptione){3031sendTextMessage=null;3233}3435MS.hookMethod(SmsManager,sendTextMessage,newMS.MethodAlteration(){3637publicObjectinvoked(Object_this,Object..._args)throwsThrowable{3839Log.i("SMSHOOK","SEND_SMS");4041Log.i("SMSHOOK","destination:"+_args[0]);4243Log.i("SMSHOOK","source:"+_args[1]);4445Log.i("SMSHOOK","text:"+_args[2]);4647returninvoke(_this,_args);4849}5051});525354}5556});5758}5960}

运行后的结果为:

关于如何进行Android HOOK工具Cydia Substrate使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

标签:cydia substrate-

抖音(Tiktok)是由北京字节跳动科技有限公司(ByteDance)孵化的音乐创意短视频社交网站。它于2016年9月20日上线,主要面向全年龄段的用户,尤其是...

飞极速为您提供高清在线电影、电视剧大全、动画片,综艺等,飞极速在线更新及时,播放速度快,给您带来最好的观影体验!飞极速在线,免费提供日本新番动漫、最新电影和最新...

《南华早报》(英语:South China Morning Post, SCMP)和星期日出版的《星期日南华早报》(英语:Sunday Morning Post...

绿鞋机制会破发吗?绿鞋保护机制可以保证在上市发行的第1个月内,每天的收盘价最少是高于发行价的。也就是说即使投资者没有赚到钱,最少也可以保证可以按照认购价顺利退出,最少可以保证不受到损失。但这也不是说,有了绿鞋机制,股票就一定不会破发,如果上市公司出现问题,也依旧是抵不住股票一直下跌的,所以我们也不能因为股票绿鞋机制的保护而放松警惕。绿鞋机制的主要目的是什么?绿鞋机制的主要目的是防止新股发行上市后股...

目前《2022胡润全球零售企业家榜》信息显示,49岁的刘强东及其妻子章泽天以1350亿元的财富位列第九,比去年下降28%。去年全年,京东收入9516亿元,同比增长28%;经营利润为41亿元,同比下降66%。其中,零售业部分营收8700亿元,占比超过90%;商品交易总额为3.3万亿元,同比增长26%。而在整合了京东物流、京东仓配等供应链环节之后,京东的一站式服务营收也稳定增长。58岁的马云及其家族以...

什么是顾比均线?顾比均线是由两组均线构成,短期组为3、5、8、10、12、15。长期组为:30、35、40、45、50、60。顾比均线由澳大利亚的投资家戴若-顾比先生发明,因此叫顾比线。手机顾比均线怎么设置?顾比均线在外汇操作过程中比较常见,它是用来判断趋势的,其设置步骤如下:1、打开MT4手机APP;2、点击插入-技术指标-Moving average;3、在时间周期中输入均线参数点击确定,然后...

TOP