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

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

发布将近一年了,最近发现还是有些人需要的,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,参考:

    http://www.cydiasubstrate.com/id/73e45fe5-4525-4de7-ac14-6016652cc1b8/

  • 手机端去Google Play 下载安装 Cydia Substrate
  • Eclipse 导入本代码,编译后安装到手机。
  • 手机上运行Substrate,界面上点击“Link Substrate Files”,再点击 “Restart System(Soft)”
  • 通过CydiaHook,查看挂载路径和状态。

参考官方的入门教程 VioletExample:

http://www.cydiasubstrate.com/id/20cf4700-6379-4a14-9bc2-853fde8cc9d1/


cydia-android-hook

Cydia Substrate demo, hook getExternalStorageState, always return MOUNTED status.

时间: 2024-11-05 19:43:41

android 上的API函数钩子,利用CydiaHook实现的相关文章

反射调用android系统级API函数

try { Class<?> mClass = Class.forName("com.android.server.wifi.WifiSettingsStore"); Constructor con=mClass.getDeclaredConstructor(Context.class); if(!con.isAccessible()){ con.setAccessible(true); } Object store = con.newInstance(this); Met

Detours简介 (拦截x86机器上的任意的win32 API函数)

Detours 当然是用detours,微软明显高腾讯一筹,同上,至今没失败过.写这种HOOK一定要再写个测试程序,不要直接HOOK你的目的程序,例如QQ,因为这样不方面更灵活的测试.说明一下:Detours是微软开发的一个函数库(源代码可在http://research.microsoft.com/sn/detours 免费获得)用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为.具体用途是:拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的

VB.NET 章鱼哥出品--利用API函数AnimateWindow创建Popup提示窗口

当我们打开电脑上网时,是不是会经常看到桌面的右下角弹出一个小的新闻热点窗体,我们可以实现吗?当然可以,这篇文章就来给您掩饰怎么样来用代码实现.看吧,正写着呢弹出了一个. 一.主要用到的函数是API函数AnimateWindow.下面来简单的介绍一下这个函数的使用. 1 函数声明 '声明API函数AnimateWindow.该函数可以动态的操作窗体 Declare Function AnimateWindow Lib "user32" Alias "AnimateWindow&

利用 Android 系统原生 API 实现分享功能

利用 Android 系统原生 API 实现分享功能 这篇文章提供一个封装好的 Share2 库供大家参考. GitHub 项目地址:Share2 大家知道,要调用 Android 系统内建的分享功能,主要有三步流程: 创建一个 Intent ,指定其 Action 为 Intent.ACTION_SEND,表示要创建一个发送指定内容的隐式意图. 然后指定需要发送的内容和类型,设置分享的文本内容或文件的Uri,以及文件的类型,便于是支持该类型内容的应用打开. 最后向系统发送隐式意图,开启系统分享

ORB_SLAM2在Android上的移植过程

作者:Frank 转载请注明出处 一直没时间写博客,最近抽时间写了些关于在ORB_SLAM2在Android上的移植过程,也算是点经验吧. 写完后一个手贱点了个链接,瞬间1/3工作量没了,深夜弄完也是醉了... 正文开始 这篇博客讲述如何在Android平台上移植ORB_SLAM2,讲述过程包括基本的Android环境的搭建和NDK环境的配置,Android下移植的基本概念,ORB的具体移植步骤等. Android平台搭建和NDK环境配置 系统:windows7 32bit IDE:Eclips

(4.2.33)Android上玩玩Hook(1):Cydia Substrate初识

选自: Android上玩玩Hook? 跟着鬼哥学Android java hook (一) 摘要:Hook的出现为开发者希望通过一个程序改变其他程序的某些行为的想法开拓了解决道路,而作为一款基于Hook的代码修改框架,Cydia Substrate可以修改任何主进程的代码,本文作者以广告注入的实战详细介绍了Hook的过程. 了解Hook 还没有接触过Hook技术读者一定会对Hook一词感觉到特别的陌生,Hook英文翻译过来就是"钩子"的意思,那我们在什么时候使用这个"钩子&

Android 上千实例源码分析以及开源分析

Android 上千实例源码分析以及开源分析(百度云分享) 要下载的直接翻到最后吧,项目实例有点多. 首先 介绍几本书籍(下载包中)吧. 01_Android系统概述 02_Android系统的开发综述 03_Android的Linux内核与驱动程序 04_Android的底层库和程序 05_Android的JAVA虚拟机和JAVA环境 06_Android的GUI系统 07_Android的Audio系统 08_Android的Video 输入输出系统 09_Android的多媒体系统 10_

实现拦截API的钩子(Hook)

道理不多讲,简单说就是将系统API的跳转地址,替换为我们自己写的API的地址,所以要求我们自定义的API函数要和被拦截的API有相同的参数.在用完后,记得恢复. 因为要挂全局的钩子,所以Hook的部分,做成DLL.   源码下载 Hook.DLL主工程文件代码 [delphi] view plaincopy library Hook; uses SysUtils, Windows, Classes, ApiDefine in 'ApiDefine.pas', APIHook in 'APIHoo

Android 上的 制表符(tab) —— 一个神奇的字符 (cocos2dx crash)

今天测试发现了游戏的一个问题,系统邮件,如果发了tab,在android上一打开邮件内容就会crash.而且他们很确定是tab的问题. 凭我多个月的经验(确实没多年...)来看,从来没听说在android上会因为一个tab崩溃,而且如果有这个问题,肯定会有很多人遇到,估计早就吵翻天了,搜索了一下,什么可用信息都没有. 于是写个测试工程测试了一下,分别在mac下和windows下,用文本编辑工具编辑了4个txt文档,utf有bom和无bom,内容是" tab abcd ",发现都能正常显