请教一下,我使用dlopen返回的为null,一直不清楚原因,代码如下,难道写法不对么?
dlopen("/System/Library/Frameworks/Foundation.framework/NSProcessInfo", RTLD_LAZY | RTLD_GLOBAL)
- Foundation默认加载了你dlopen她干啥。
- 没有/System/Library/Frameworks/Foundation.framework/NSProcessInfo, 只有/System/Library/Frameworks/Foundation.framework/Foundation
- 不知道你想干什么
1:如下所示,我想hook一个.h文件里面的 bun,如果用MSHookMssageEx的话,会导致程序闪退,MSHookMssageEx函数原型是void MSHookMessageEx(Class _class, SEL message, IMP hook, IMP *old),由于我想hook的bun 类型是Bundle ,所以使用MSHookMessageEx时候 第三个参数返回值是 IMP 一方面会报错,一方面也不能返回Bundle 类型。
所以问题来了,该如何使用呢?
typedef struct {
NSInteger A;
NSInteger B;
NSInteger C;
} Bundle
@property (readonly) Bundle bun
2:因为MSHookMessageEx使用有问题,所以才尝试dlopen的方式,不过现在来看显然不对。
3:问题1已经描述啦
直接hook同名的getter就可以了啊哪来这么复杂
我是hook get方法,因为我想修改Bundle 里面 A、B、C三个值,那么这个get 方法返回的是Bundle 类型啊。但是具体写法 我用MSHookMessageEx是不行的
您说的hook方式麻烦能写下么
代码呢。。。
代码就是3楼我写的呢