基于Theos越狱开发

前言:
       theos是国外大牛开发的越狱编译平台,通过命令行可以快速的生成例子,其最有意思的当属tweak插件的开发,其Logus的语法简洁明了,是越狱中HOOK的绝佳神器,下面就来一步步揭开这些东西的神秘面纱!
一、环境准备

1、安装theos

;新建theos安装目录
$cd ~
$mkdir -r work/theos

;下载theos
$export THEOS=~/work/theos
$svn co http://svn.howett.net/svn/theos/trunk $THEOS


2、 安装签名工具ldid

$git clone git://git.saurik.com/ldid.git
$cd ldid
$git submodule update --init
$./make.sh
$cp -f ./ldid $THEOS/bin/ldid

3、设置环境变量

$touch ~/.bash_profile

;设置环境变量(THEOS_DEVICE_IP为要安装app的真机IP)
$vi ~/.bash_profile
export THEOS=~/work/theos
export PATH=$THEOS/bin:$PATH
export THEOS_DEVICE_IP=10.60.113.36 THEOS_DEVICE_PORT=22

4、安装substrate库

;安装brew 包安装工具
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

;安装wget
$brew install wget

;安装dpkg
$brew install dpkg

;下载substrate
$wget http://apt.saurik.com/debs/mobilesubstrate_0.9.6011_iphoneos-arm.deb

;解包
$mkdir substrate
$dpkg-deb -x mobilesubstrate_*_iphoneos-arm.deb substrate

;拷贝到theos目录
$mv substrate/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate $THEOS/lib/libsubstrate.dylib
$mv substrate/Library/Frameworks/CydiaSubstrate.framework/Headers/ \
    CydiaSubstrate.h $THEOS/include/substrate.h

5、更新iphone开发头

$mkdir iphoneheaders

;下载头文件
$git clone https://github.com/nanotech/iphoneheaders.git

;拷贝到theos目录下
$mv iphoneheaders/* $THEOS/include/

;ps
$cp /System/Library/Frameworks/IOSurface.framework/Headers/IOSurfaceAPI.h .

二、真枪实战

1、第一个application程序

;应用环境变量
$. ~/.bash_profile 

;新建项目
$ $THEOS/bin/nic.pl
NIC 1.0 - New Instance Creator
------------------------------
  [1.] iphone/application
  [2.] iphone/library
  [3.] iphone/preference_bundle
  [4.] iphone/tool
  [5.] iphone/tweak
Choose a Template (required): 1
Project Name (required): iPhoneDevWiki
Package Name [com.yourcompany.iphonedevwiki]: net.howett.iphonedevwiki
Authour/Maintainer Name [Dustin L. Howett]:              
Instantiating iphone/application in iphonedevwiki/...
Done.

;切换到生成的项目目录下 make 生成deb
$cd iphonedevwiki
$make package

;安装deb到cydia中
$make install

在真机的cydia已安装列表中会有iphonedevwiki的包名,需要respring手机才能在桌面看到安装的app。respring可以在cydia上安装个插件Respring,方便调试!

2、第一个tweak程序

;应用环境变量
$. ~/.bash_profile 

;新建项目
$ $THEOS/bin/nic.pl
NIC 1.0 - New Instance Creator
------------------------------
  [1.] iphone/application
  [2.] iphone/library
  [3.] iphone/preference_bundle
  [4.] iphone/tool
  [5.] iphone/tweak
Choose a Template (required): 5
Project Name (required): iPhoneDevWiki
Package Name [com.yourcompany.iphonedevwiki]: net.howett.iphonedevwiki
Authour/Maintainer Name [Dustin L. Howett]:              
Instantiating iphone/tweak iphonedevwiki/...
Done.

;生成的文件目录
Makefile
Tweak.xm
control
theos
tweak.plist

;Makefile中增加编译框架
iPhoneDevWiki_FRAMEWORKS = UIKit

;Tweak.xm中增加alert

#import <SpringBoard/SpringBoard.h>

%hook SpringBoard

-(void)applicationDidFinishLaunching:(id)application {
%orig;

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome"
message:@"Welcome to your iOS Device Ted!"
delegate:nil
cancelButtonTitle:@"security.ios-wiki.com" otherButtonTitles:nil];

[alert show];
[alert release];

}

%end


;切换到生成的项目目录下 make 生成deb
$cd iphonedevwiki
$make package

;安装deb到cydia中
$make install
一、deb patch

1、获取cydia安装包

    老版本的cydia会将通过源安装的deb删除掉,以至找不到deb包。当前可使用apt来获取安装包。

$cd var/cache/apt/archives

#更新源
$apt-get update

#下载包
$apt-get -d install app.weiphone.nx

#查看包安装信息
$dpkg-dbg -I xx.deb

#安装deb
$dpkg -i xx.deb

#卸载应用
$dpkg -r app.weiphone.nx

2、通过theos编译的deb文件里面包含debian_binary、control.tar.gz、data.tar.gz等文件,可以使用命令显示

#列出deb中文件
$ar vt com.cm.tweak_0.0.1-1_iphoneos-arm.deb   
rw-r--r--       0/0             4 Aug  9 00:53 2016 debian-binary
rw-r--r--       0/0           293 Aug  9 00:53 2016 control.tar.gz
rw-r--r--       0/0          1708 Aug  9 00:53 2016 data.tar.gz

#提取文件
$ar vx xxx.deb debian-binary
$ar vx xxx.deb control.tar.gz
$ar vx xxx.deb data.tar.gz

#删除文件
$ar d xxx.deb data.tar.gz

#更新文件
$ar r xxx.deb data.tar.gz

#解压tar.gz
$tar -tzvf control.tar.gz

#打包
$tar -zvcf control1.tar.gz control postinst

#制作deb包
$ar -rc xx.deb debian-binary control.tar.gz data.tar.gz

#特殊情况碰到lzma
#安装lzma
$sudo apt-get install lzma

#查看lzma情况
$ lzmainfo data.tar.lzma

#解压lzma
$unlzma data.tar.lzma
$tar -xvf data.tar

#压缩lzma
$tar -cvf data.tar file1 file2
$lzma -z data.tar

3、scp操作

1、从服务器下载文件
  scp username@servername:/path/filename /tmp/local_destination

2、上传本地文件到服务器
  scp /path/local_filename username@servername:/path  
  
3、从服务器下载整个目录
  scp -r username@servername:remote_dir/ /tmp/local_dir 
  
4、上传目录到服务器
  scp  -r /tmp/local_dir username@servername:remote_dir

4、重启springboard,刷新桌面

$killall SpringBoard

ps:

syslogd to /var/log/syslog

tail -f /var/log/syslog

转载于:https://my.oschina.net/u/2424583/blog/730351

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值