首页
社区
课程
招聘
[原创]CydiaSubstrate框架
发表于: 2020-11-5 17:05 5232

[原创]CydiaSubstrate框架

2020-11-5 17:05
5232

Cydia Substrate是一个基于Hook的代码修改框架,可以在Android、iOS平台使用,并实现修改系统默认代码。

Substrate具体的运行是由下图这个jar包所执行。

1.Substrate的代码编写实现系统文字颜色篡改。
(1)创建一个空的Android工程,由于创建的工程将以插件的形式被加载,所以不需要activity,将SDK中的substrate-api.jar复制到project/ libs文件夹中。配置Manifest文件指定权限,cydia.permission. SUBSTRATE,如下图所示。

(2)创建一个类,类名为Main,类中包含一个static方法initialize,当插件被加载的时候,该方法中的代码就会运行,完成一些必要的初始化工作,如下图所示。

(3)添加meta标签,name为cydia.permission.SUBSTRATE,value为下一步创建的类名,例如Main,如下图所示。

(4)为了实现HOOK,达到修改目标类中的代码的目的,需要得到目标类的一个实例,如下图所示。

(5)通过MS.MethodHook实例实现原代码的修改。为了调用原来代码中的方法,需要创建一个MS.MethodPointer类的实例,它可以在任何时候运行原来的代码,如下图所示。

(6)返回颜色,重启系统即可,如下图所示。

2.Substrate的代码编写实现游戏金币篡改。
(1)定义方法,如下图所示。

(2)hook获取金币数的方法,如下图所示

(3)新建一个MethodPointer对象,如下图所示。

(4)开始hook方法,写入自己想改变的数据,如下图所示。

(5)调用原getMoney方法,将原方法的返回值放到coin_num,如下图所示。

(6)修改金币数,返回coin_num返回游戏即可,如下图所示。

1.创建一个android程序,在android工程中新建jni文件夹,加入相关的头文件substrate.h和库文件。

例如:工程只支持arm,那就加入cydia_substrate\lib\armeabi下的两个so文件,如下图所示。

2.在AndroidManifest.xml中注册cydia的自定义权限cydia.permission. SUBSTRATE,设置android:hasCode为 "false",android:install Location 设置为 "internalOnly",如下图所示。

3.编写Hook模块代码,即上面的test.cpp ,如下图所示。

4.编写Android.mk,如下图所示。

5.ndk-build将在android工程中生成libs目录,如下图所示。

6.build android工程即可生成hook模块的apk安装包。

7.打开框架apk,点击“Link Substrate Files”,之后点击“Restart System”进行使用。

Hook native demo运行之后,会打印每个程序加载so的情况,如下图所示


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//