iOSOpenDev是一款简化越狱开发的工具,它包含了开发中用的到一切,并且是使用Xcode开发,自动创建deb文件。不过不少开源的Cydia插件都是直接使用theos开发,所以最近主要学习了关于theos的使用,介绍如何制作一个锁屏插件。

ios7和之前的ios版本结构都不太一样,所以使用hook的时候,得重新琢磨新的头文件和方法。

创建Tweak

打开终端cd到保存Tweak文件夹的位置,用theos创建:

➜ /opt/theos/bin/nic.pl
NIC 2.0 - New Instance Creator
------------------------------
  [1.] iOS/CCLoader Plugin
  [2.] iOS/Command Line Interface
  [3.] iOS/Flipswitch Toggle
  [4.] iOS/Notification Center Widget
  [5.] iOS/XPC Service
  [6.] iphone/application
  [7.] iphone/library
  [8.] iphone/preference_bundle
  [9.] iphone/tool
  [10.] iphone/tweak
Choose a Template (required): 10
Project Name (required): LockScreen
Package Name [com.yourcompany.lockscreen]: com.neo.lockscreen     
Author/Maintainer Name [neo]: 
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: 
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: 
Instantiating iphone/tweak in lockscreen/...
Done.

选择模版10,创建tweak。Project Name填写插件名称,Pakcage Name修改yourcompany为你的名字,我这里填写com.neo.lockscreen,之后的项回车缺省即可,有一点要注意的是:指明hook的程序,默认是指明hook的程序,默认是com.apple.springboard

添加自定义锁屏功能

打开lockscreen文件夹,打开Tweak.xm,清空里面的内容。

输入一下:

%hook SBLockScreenView

-(id)_defaultSlideToUnlockText{
    %orig;//执行原方法,必须有
    NSString *text = @"Change to w/e";
    return text;    
}

/%-(void)setCustomSlideToUnlockText:(id)unlockText{
    unlockText= @"Change to w/e";
    %orig(unlockText);
}%/
//Choose either one, both of those worked for me on iOS 7.0.4 iPhone 4
%end 

这段代码的主要目的是hook SBLockScreenView里面的_defaultSlideToUnlockText方法或者方法或者方法。

make package installTHEOS_DEVICE_IP设置好,手机越狱,并且两者在同一个局域网中,那么可以执行make package install,打包deb和安装到手机。

更多资源

更多开源插件:Open Source Projects