Dlopen的问题

请教一下,我使用dlopen返回的为null,一直不清楚原因,代码如下,难道写法不对么?
dlopen("/System/Library/Frameworks/Foundation.framework/NSProcessInfo", RTLD_LAZY | RTLD_GLOBAL)

http://www.manpages.info/macosx/dlerror.3.html

  • 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方式麻烦能写下么:smile:

代码呢。。。

:grinning:代码就是3楼我写的呢