0

我只想创建一个 MS 插件来挂钩 SpringBoard。我正在从这里“ http://www.ipodtouchfans.com/forums/showthread.php?t=103558 ”关注“ gojohnnyboi ”教程。

要在 XCode 上创建 dylib,我正在关注“ SkylarEC教程。我混合了这两个很棒的教程,最后通过获得一个 dylib 获得了成功。但是当我将 dylib 放入时,/Library/MobileSubstrate/DynamicLibraries/什么都没有发生(没有显示警报)。

通过评估,我发现这个dylib在加载到内存时没有任何起点。所以我通过在 .mm 文件中声明一个构造函数来提到一个起点,例如,

__ attribute__((constructor)) static void init()
{
    Class _$SBAppIcon = objc_getClass("SBApplicationIcon");
    MSHookMessage(_$SBAppIcon, @selector(launch), (IMP) &__$ExampleHook_AppIcon_Launch, "__OriginalMethodPrefix_");  
}

但是当我试图编译这个时,我得到了一个错误,比如,

**Undefined symbols:
  "_MSHookMessage", referenced from:
      init()      in ExampleHook.o
ld: symbol(s) not found
collect2: ld returned 1 exit status.**

有谁知道如何解决这个问题?如果有人分享详细的教程/说明以在 XCode 上创建一个 dylib,那将会非常有用。

PS我把所有的libsubstrate.dylib和substrate.h文件都放在了对应的位置。地点是,

  • libsubstrate.dylib:/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/
  • 基板.h:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/include

我的基础 SDK 是 3.0。

4

4 回答 4

3

你应该看看iOSOpenDev

于 2013-01-18T07:31:38.890 回答
0

尝试http://unlimapps.com/?p=15使用该帖子中的方法编译插件会容易得多

于 2010-12-03T17:48:29.543 回答
0

(这些是非常古老的教程。一些现代 MS 代码可以在http://iphonedevwiki.net/index.php/MobileSubstrate中找到。最终有人需要编写更新的教程......)


确保您已libsubstrate.dylib在 Xcode 项目中添加(添加 → 现有文件...)。除非您告诉编译器,否则编译器不会自动找到要链接的 dylib。

于 2010-05-22T12:54:45.923 回答
0

您必须将CydiaSubstrate.framework复制到Mac 中的/Library/Frameworks并链接到 CydiaSubstrate

#include <CydiaSubstrate/CydiaSubstrate.h>
于 2016-06-02T05:49:46.207 回答