CydiaSubstrate框架

article/2025/8/26 8:12:42

往期推荐

Frida Native层HOOK

Frida hook Java层

frida环境安装

Xposed框架安装、使用及插件开发

需要相关资料的朋友,可以【[加入此处即可打包获取]】

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

一:substrate的API介绍

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返回游戏即可,如下图所示。

在这里插入图片描述

二: native层hook

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”进行使用。

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

在这里插入图片描述

小结

分享了substrate的基本概念,substrate的API介绍,Substrate的代码编写实现系统文字颜色篡改,Substrate的代码编写实现游戏金币篡改,Substrate的native层hook。

如果你也对安卓逆向感兴趣。可以加入下方的群,大家一起讨论问题,或者扫描下方二维码关注公众号,关注回复 “安卓逆向” 获取免费教程

安卓逆向交流学习 Q群:876526335
vx:yijin_LX

在这里插入图片描述


http://chatgpt.dhexx.cn/article/pABYrboT.shtml

相关文章

创建Substrate 私有网络

创建Substrate 私有网络 所有区块链都要求网络中的节点就消息集及其顺序达成一致,以成功创建区块并从一个区块推进到下一个区块。每个块代表特定时间点的数据状态,节点对状态的一致称为共识。有几种不同的算法用于达成共识,包括:…

Build the Substrate Kitties Chain(中文翻译)

欢迎来到Substrate Kitties课程。 本课程将向您介绍如何构建一个可以创建并持有非同质化代币(NFT,这个NFT名称为Substrate Kitties)的区块链。课程分为部2部分: Part I 描述如何构建Kitties pallet,以及这个pallet怎样…

oracle substrate,Substrate 2.0 带来了哪些改变?

Substrate 已到了 2.0 版本的主要里程碑处。该区块链框架现在包含链下工作机(off-chain workers)和 70 多个可组合模块,并为构建优化的、与 Polkadot 兼容的、可投入生产的区块链奠定了坚实的基础。数十个实时区块链已经在运行 Substrate 2.0,包括Polkad…

Substrate 基础教程(Tutorials) -- 授权特定节点

五、授权特定节点 在添加可信节点中,您看到了如何使用一组已知的验证器节点构建一个简单的网络。该教程演示了一个简化版的许可网络(permissioned network)。在一个被许可的网络中,只有被授权的节点(authorized nodes…

Substrate常见问题

目录标题 1. Rust nightly not installed, please install it!2. Rust WASM toolchain not installed, please install it!3. use pallet::*出错4. failed to load manifest for workspace member5. error: failed to run custom build command for node-template-runtime v4.0…

什么是 Substrate

如果你关注了 Polkadot 项目,可能会多次看到「Substrate」这个词。 它是 Polkadot 项目的重要组成部分,但有关它的信息非常少。 白皮书或黄皮书里找不到, 至少没有专门的介绍「Substrate」。 从较高的层面来看,Substrate 是一个可…

Substrate之旅3:Substrate是什么

Substrate 是从Polkadot 孵化出来的项目。它是一个用来搭建区块链的通用框架,具有以下特点: 可扩展。模块化。开源。 Substrate的框架与组件 框架 其中: P2P: libp2p网络协议,Substrate基于该协议实现了一个不带任何假设的&…

Substrate 基础 -- 教程(Tutorials)

官网 github DOC 面向未来的区块链框架 Substrate 使开发人员能够快速、轻松地构建适合任何用例的未来 证明区块链(future proof blockchains)。 Substrate 文档包括区块链构建器(blockchain builders)和parachain 项目团队的概念、过程和参考信息。…

【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )

文章目录 一、substrate 简介二、substrate 相关文档资料 一、substrate 简介 substrate 官网 : http://www.cydiasubstrate.com substrate 框架 是 Cydia 下的逆向工具 , 该框架是开源的 ; substrate 配合对应的 so 动态库 和 头文件 , 可以在 Android / iOS 平台中独立运行 …

ios tableView那些事(三)给tableView添加些图片

感觉光有数据的tableView很丑&#xff0c;那么我们就来美化下吧&#xff0c;加一些图片 #import <UIKit/UIKit.h> /*tableview 一定要用到这两个delegate UITableViewDataSource,UITableViewDelegate */ interface ViewController :UIViewController <UITableViewDa…

QT的TableView实现多级表头

QT的TableView实现多级表头 最近项目需要支持多级表头&#xff0c;QT本身不支持。可重写QHeaderView表头实现。 demo如下&#xff1a; FSItemDelegate.h #pragma once/* 自定义委托类 */ #include <QItemDelegate> #include <QSpinBox> #include <QDoubleSpin…

QML类型:TableView

一、描述 TableView 显示从内置 QML 类型&#xff08;如 ListModel 和 XmlListModel&#xff09;创建的模型中的数据&#xff0c;这些模型仅填充 TableView 中的第一列。要创建具有多列的模型&#xff0c;请使用 TableModel 或继承 QAbstractItemModel 的 C 模型。 TableView…

QML TableView表格使用示例

前言 QML中实现表格可以使用多种方式&#xff0c;比如直接使用ListView&#xff0c;定义每一行delegate&#xff0c;或者自定义Rectangle&#xff0c;放到Flipable中组合使用。Qt Quick Control1中 从5.1版本开始就提供了表格控件&#xff0c;但是感觉不怎么好用&#xff0c;在…

Qt TableView的简单使用

软件环境&#xff1a; ubuntu -------------------------------------------------------------------------------------------------------- 最终效果图&#xff1a; --------------------------------------------------------------------------------------------------…

PyQt5 TableView组件

一、话不多说&#xff0c;先看图 本次要实现的是主窗口内添加widget组件&#xff0c;widget内设置成垂直盒布局&#xff0c;然后在布局中添加tableView、PushButton组件 二、看main函数 if __name__ __main__:app QApplication(sys.argv)# 现在这创建 主窗口 &#xff08;不然…

优雅的开发TableView

前言 UITableView&#xff08;UITableViewController&#xff09;是iOS开发使用频率最高的一个组件。 不管是使用UITableView还是还是UITableViewController&#xff0c;在开发的时候&#xff0c;我们都需要实现两个协议&#xff1a; UITableViewControllerDataSourceUITabl…

JavaFX控件——TableView

在JavaFX 应用中对创建表格最重要的是TableView, TableColumn和TableCell这三个类。 你可以通过实现数据模型&#xff08;data model&#xff09; 和 实现 单元格工厂(cell factory) 来填充表格。 表格类提供了表格列嵌入式的排序能力和必要时调整列宽度的功能。 下面开始学…

ios开发:多个Section的TableView

开发多个Section的tableView。 首先应该考虑到数据源该如何得到 我们这里可以通过两种方式:第一种是读取plist文件。第二种是通过代码进行数据存储以及读取。 多个Section需要的数据源是一个字典&#xff0c;字典里的内容是一个数组。在plist文件中可以这样去创建 在.h文件中…

tableview概述

转自&#xff1a;http://www.cnblogs.com/smileEvday/archive/2012/06/28/tableView.html                 下面分9个方面进行介绍&#xff1a; 一、UITableView概述 UITableView继承自UIScrollView&#xff0c;可以表现为Plain和Grouped两种风格&#xff0c;分…

ios tableView那些事(一)创建一个简单的tableView

工作也有半年多了&#xff01;几乎每个项目中的会用到tableview这个神奇而好用的控件&#xff0c;在学习和工作中都会看别人的博客&#xff01;对我有很大的帮助&#xff0c;就如同站在巨人的肩膀上的感觉吧 哈哈&#xff01;于是决定重新开始写博客&#xff0c;希望能帮助像我…