android 上的API函数钩子,利用CydiaHook实现

通过CydiaSubstrateSDK开发的CydiaHook项目,可实现在无SD卡情况下模拟SD卡挂载状态,便于调试应用程序,避免因修改ROM底层导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发布将近一年了,最近发现还是有些人需要的,github上也有些人fork了。

例子代码,发布在github上,地址:<https://github.com/zencodex/cydia-android-hook>

### CydiaHook

利用Cydia Substrate SDK 开发,可以HOOK java层或NATIVE层 API接口。

### 本代码功能
写代码的初衷是因为有个app,需要保存数据到SD卡上,并且app里面有判断SD挂载的状态。没有SD卡,会造成程序逻辑有问题,很多功能无法正常使用,而我的手机没有装SD卡。

另外这种HOOK方式也有助于调试程序,不必因为修改ROM底层,而引起手机变砖,简便好用,目前Cydia Substrate在某些手机中可能会有不稳定的情况,我测试的机型是ZTE U969,还找不到相关ROM。

- HOOK android.os.Environment.getExternalStorageState(),强制返回,已挂在状态。
- 执行mount bind 挂载可以读写目录到 SD卡的路径,每个终端方案商的挂载点都可能不同,请根据自己的情况,修改成正确的挂载点路径。
- 可以根据自身需要,修改挂载实现函数,可以HOOK framework中的任何API。在Main.java里,比如IMEI,GPS模拟等等。

### 准备工作

- ROOT过的手机一部,没有ROOT的,请自行搜索方法。
- Eclipse 上安装 Android Substrate SDK,参考:<br>
http://www.cydiasubstrate.com/id/73e45fe5-4525-4de7-ac14-6016652cc1b8/
- 手机端去Google Play 下载安装 Cydia Substrate
- Eclipse 导入本代码,编译后安装到手机。
- 手机上运行Substrate,界面上点击“Link Substrate Files”,再点击 “Restart System(Soft)”
- 通过CydiaHook,查看挂载路径和状态。

参考官方的入门教程 VioletExample:<br>
http://www.cydiasubstrate.com/id/20cf4700-6379-4a14-9bc2-853fde8cc9d1/

---

### cydia-android-hook
Cydia Substrate demo, hook getExternalStorageState, always return MOUNTED status.

转自:http://www.yinqisen.cn/blog-407.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值