首页
社区
课程
招聘
[求助]请问cydia substrate可以hook so函数吗
发表于: 2014-12-10 10:06 22300

[求助]请问cydia substrate可以hook so函数吗

2014-12-10 10:06
22300
在官网上看说是可以hook native code,在http://bbs.pediy.com/showthread.php?t=187948这个帖子中也说了xx助手也用到了substrate hook so的函数,我想应该是可以的吧,但是网上都没找到相关例子,有没有做过的介绍一下它的API,感激不尽。

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

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 233
活跃值: (148)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
可以的,你看一下官网的例子。
2014-12-10 10:14
0
雪    币: 60
活跃值: (348)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
可以的,可以参考https://github.com/myCodeHurts/Plum---Android-Native-Cydia-Substrate,so换成你自己的so
2014-12-10 13:35
0
雪    币: 13
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
可以的。 。
2014-12-10 19:33
0
雪    币: 19
活跃值: (252)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
官网我都看过了,没有关于hook native代码的例子,只是讲了几个API
2014-12-10 22:08
0
雪    币: 19
活跃值: (252)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个例子是用c的hook java方法,并不是hook的native方法。
2014-12-10 22:13
0
雪    币: 233
活跃值: (148)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
http://www.cydiasubstrate.com/api/c/MSHookFunction/
2014-12-10 23:04
0
雪    币: 19
活跃值: (252)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恩,这个是对so hook的API,但是我还是不太懂http://www.cydiasubstrate.com/inject/android/所说的,也就是我不太清楚这个插件是如何被加载的,能有个完整的例子就好了,能帮忙解释一下吗,万分感谢。
上传的附件:
2014-12-11 08:47
0
雪    币: 60
活跃值: (348)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
那个例子的so你直接换成你自己hook c的函数的so就可以了
2014-12-12 09:48
0
雪    币: 233
活跃值: (148)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
10
你需要先安装官方的com.saurik.substrate.apk,在APK的asset下,你会发现有substrate.h头文件,放到你的项目当中。 另外,当成功安装com.saurik.substrate.apk后,你需要先开启一下,这时会提示要软重启。 这时,你看一下手机上的/system/lib下,会多出一个libsubstrate.so,把这个文件拿到自己的项目编译就好了。

API参考官方的文档即可
2014-12-16 00:02
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
11
2015-6-25 09:54
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mark最近也在研究这个
2015-6-25 10:53
0
雪    币: 76
活跃值: (206)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
13
给你一个用例:

#include "substrate.h"

#define LOG_TAG "DEBUG"
#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, fmt, ##args)

typedef void (*oldfuns)();
extern "C" void hello() {
        LOGD("hello");
}

extern "C" void hook_hello() {
        LOGD("hook hello");
}

oldfuns oldhello;
extern "C" int hook_entry(char * a){
    LOGD("Hook success, pid = %d\n", getpid());  
    LOGD("Hello %s\n", a);
       
        hello();
        MSHookFunction((void*)hello, (void*)hook_hello, (void**)&oldhello);
        hello();
    return 0;  
}
2015-6-30 18:02
0
雪    币: 215
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这种貌似只能 hook 导出的方法
2015-7-6 10:21
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
你用过么 这个咋hook 其他apk的so函数 我总是不成功。
2015-7-6 14:57
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
回复多了。。
2015-7-6 14:58
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
好东西保留下 多谢
2015-7-6 21:49
0
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
没啥用处,用的substrate的注入,还得自己装他们的apk,然后link自己的so这样毛用,要自己注入自己hook携程一个apk给别人用这样才行啥,不然你叫用你外挂的人,还去自己装个substrate啊
2016-3-8 15:10
0
雪    币: 26
活跃值: (42)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
http://blog.csdn.net/hu3167343/article/details/50792153    可以看看这篇,挺详细的。
2016-3-8 15:15
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
SnowNight 没啥用处,用的substrate的注入,还得自己装他们的apk,然后link自己的so这样毛用,要自己注入自己hook携程一个apk给别人用这样才行啥,不然你叫用你外挂的人,还去自己装个substra ...
其实  substrate  的客户端不需要安装,安装客户度主要目的是,创建相关的运行环境,因此这一步可以自己做。
2017-5-9 16:27
0
雪    币: 39
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
21
大愚 其实 substrate 的客户端不需要安装,安装客户度主要目的是,创建相关的运行环境,因此这一步可以自己做。
安装客户度主要目的是,创建相关的运行环境,因此这一步可以自己做

--------这一步怎么做呢 
2017-9-24 17:48
0
游客
登录 | 注册 方可回帖
返回
//