-
-
[原创]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的情况,如下图所示
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [转帖]无需脱壳抓取软件加密包方法(逆向破解) 10704
- [分享]Android逆向——RSA加密算法 4110
- [原创]普通协议(HTTP)与安全协议(HTTPS) 3996
- [转帖]Android App加固原理与技术历程 4183
- [分享]实战分析人X的HTTP协议 5281