使用啥私有 c++ 函数返回类型来使用 mobilesubstrate 进行挂钩

Posted

技术标签:

【中文标题】使用啥私有 c++ 函数返回类型来使用 mobilesubstrate 进行挂钩【英文标题】:Use what private c++ function return type for hooking using mobilesubstrate使用什么私有 c++ 函数返回类型来使用 mobilesubstrate 进行挂钩 【发布时间】:2012-02-29 08:01:51 【问题描述】:

我正在检查来自mobilesubstrate 的私有 c++ 函数挂钩代码 sn-p 并看到 WebCore 示例似乎挂钩到 2 个(可能)未记录的私有函数,这些私有函数被破坏并隐藏在 WebCore 中。让我印象深刻的是 saurik 是如何推断目标钩子函数返回的返回值的类型???损坏的函数不会泄漏我所知道的返回类型。我尝试在 IDA pro 中反汇编 WebCore 框架共享库文件,但看不到它的返回类型。有人知道吗?是否需要完全了解目标函数原型和返回类型才能成功连接到 dylibs 中的私有函数?谢谢!

#define WebKit "/System/Library/PrivateFrameworks/WebKit.framework/WebKit"
#define WebCore "/System/Library/PrivateFrameworks/WebCore.framework/WebCore"
//how to tell its an NSURLRequest* ?
NSURLRequest* (*X_ZNK7WebCore15ResourceRequest12nsURLRequestEv)(void* something);

【问题讨论】:

【参考方案1】:

据我所知,您不需要知道确切的返回类型,例如我能够成功挂钩:

static FILE * close(int arg1), 

虽然 close() 返回 void

【讨论】:

您好,感谢您的回复,但我尝试在 iphonedevwiki 上的 mobilesubstrate 主题中编译示例以进行简单的 mobilesafari 调整,并产生了可行的调整。但是,当我将 NSURLRequest* (*X_ZNK7WebCore15ResourceRequest12nsURLRequestEv)(void* something); 的返回类型从 void 更改为 int 时,我得到 Tweak.xm:67: error: invalid conversion from ‘int (*)(void*, void*, long unsigned int, void*, const void**)’ to ‘void*’ is because of MSHake?

以上是关于使用啥私有 c++ 函数返回类型来使用 mobilesubstrate 进行挂钩的主要内容,如果未能解决你的问题,请参考以下文章

我们啥时候需要 C++ 中的私有构造函数?

C++中const啥意思?

请问啥是成员函数的定义?

通用函数和类型如何存储在 rlib 中?

“Model”是“命名空间”,但此处被当做“类型”来使用,是啥原因导致的哦,这段代码我写

C++中vector的at函数是怎么使用啊 ?代表啥值啊??