使用啥私有 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 进行挂钩的主要内容,如果未能解决你的问题,请参考以下文章