日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

THEOS的第一个TWeak的成功创建

發布時間:2025/3/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 THEOS的第一个TWeak的成功创建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
THEOS的第一個TWeak的成功創建

THEOS的第一個TWeak的成功創建參考資料:成功的創建一個TWeak的彈出步驟1:安裝Xcode和Xcode command line步驟2:安裝theosa:下載theos前,設置保存的路徑:環境變量b:下載theosc:下載頭文件d:下載ldid簽名工具e:配置MoblieSubstrate環境f:安裝dpkg步驟3:開始編寫Teak應用a 創建工程b.更改Tweak.xm文件c.編寫makfiled: 編譯,安裝,運行步驟4: 證書設置(不用多次輸入密碼)總結一些坑

THEOS的第一個TWeak的成功創建

TWeak的成功創建也不是一件容易的事情.

參考資料:

  • http://www.iphonedevwiki.net/index.php/Theos/Getting_Started
  • http://security.ios-wiki.com/issue-3-6/
  • http://security.ios-wiki.com/
  • http://www.cppblog.com/AutomateProgram/archive/2013/11/11/204205.html
  • http://www.tuicool.com/articles/Bf2UFb
  • http://stackoverflow.com/questions/21013325/dpkg-error-contains-ununderstood-data-member

成功的創建一個TWeak的彈出

步驟1:安裝Xcode和Xcode command line

Xcode的安裝直接去Apple官網上去下載就好了.command line的話,現在的Xcode(2015-09-20,都是Xcode7了,Xcode6開始已經集成了command line到Xcode中了).

網上的教程有的是使用的Xcode4,5,等低版本.

這里埋下了一個坑.

步驟2:安裝theos

a:下載theos前,設置保存的路徑:環境變量

theos保存到哪里?這個路徑是需要設置為環境變量的

可以直接寫到~/.bash_profile中(設置環境變量的一般方法)

export THEOS=/usr/local/iOSTools/theos

網上很多的人都安裝到了/opt/theos路徑下,不過這個路徑隨意了,看你一般的開發工具放在哪里,就寫那里就好了.

設置好后可以echo $theos來查看設置的環境變量是否設置好了.

zx:iOSTools zx$ echo $THEOS/usr/local/iOSTools/theo

b:下載theos

下載的方法很多

  • svn的方法有:
svn co http://svn.howett.net/svn/theos/trunk $THEOS
  • gitt途徑(推薦,方便升級)
git clone git://github.com/DHowett/theos.git $ THEOS

當然了,也可以直接去git倉庫里下載一份壓縮的,將里面的內容解壓到$THEOS

c:下載頭文件

頭文件下載下來后需要做一些更改.

  • clone 頭文件倉庫
  • 將頭文件放到theos/include/目錄下
  • 復制系統的IOSurfaceAPI.h到**theos/include/IOSurface**目錄下
  • 注釋掉IOSurfaceCreateXPCObject 和IOSurfaceLookupFromXPCObject.
# clone iphoneheaders.git git clone git://github.com/rpetrich/iphoneheaders.git mv iphoneheaders/* theos/include/ cp /System/Library/Frameworks/IOSurface.framework/Headers/IOSurfaceAPI.h theos/include/IOSurface

如果沒有拷貝和注釋這兩個步驟,最后會導致打包失敗.

d:下載ldid簽名工具

  • 下載ldid可執行文件
  • 放到theos/bin/目錄下
# get ldid for Mac OS Xcd ~/theos/bincurl -O http://dl.dropbox.com/u/3157793/ldidchmod a+x ldid

這里的文件是在dropbox上,需要什么你的懂的.

所以,這里也提供一個百度盤上下載地址:

http://pan.baidu.com/s/1kTHoIGZ

注:我把這個工具下載下來放到了http://pan.baidu.com/s/1kTHoIGZ,也可以從這里下載,然后給它添加執行權限(chmod +x ldid)并移動到$THEOS/bin/這個目錄下。(from http://security.ios-wiki.com/issue-3-6/)

PS.當然了,你可以直接從源碼編譯安裝,下面是源碼倉庫

https://github.com/rpetrich/ldid

e:配置MoblieSubstrate環境

方法一:

# get libsubstrate.dylib substrate.h cd ~/theos curl -OL http://apt.saurik.com/debs/mobilesubstrate_0.9.3366-1_iphoneos-arm.deb dpkg-deb -x mobilesubstrate_0.9.3366-1_iphoneos-arm.deb mobilesubstrate cp mobilesubstrate/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate ~/theos/lib/libsubstrate.dylib cp mobilesubstrate/Library/Frameworks/CydiaSubstrate.framework/Headers/CydiaSubstrate.h include/substrate.h

(from http://www.tuicool.com/articles/Bf2UFb)

方法二:

  • 從越獄后設備拷貝出來一份
  • 重名名為: theos/lib/libsustrate.dylib

將iOS上的“/Library/Frameworks/CydiaSubstrate.framework/ CydiaSubstrate”拷貝到OSX中,將其重命名為libsubstrate.dylib后放到“/opt/theos/lib/libsubstrate. dylib”中

(from http://book.51cto.com/art/201504/472934.htm)

方法三:

  • 百度盤里下載:http://pan.baidu.com/s/1o6ocwXk(from http://security.ios-wiki.com/issue-3-6/)

f:安裝dpkg

方法一:

  • 通過mac port安裝.

mac port也就是一個軟件包管理工具,像weget,apt-install,brew等工具類似.

首先我嘗試安裝的是https://www.macports.org/install.php下的https://distfiles.macports.org/MacPorts/MacPorts-2.3.3-10.10-Yosemite.pkg

但是安裝卡頓,失敗.

然后,嘗試源碼編譯安裝,

MacPorts-2.3.3.tar.bz2

  • “cd” into the directory where you downloaded the package and run “tar xjvf?MacPorts-2.3.3.tar.bz2” or “tar xzvf?MacPorts-2.3.3.tar.gz”, depending on whether you downloaded the bz2 tarball or the gz one, respectively.

  • Build and install the recently unpacked sources:

    • cd MacPorts-2.3.3
    • ./configure && make && sudo make install

    Optionally:

    • cd ../
    • rm -rf MacPorts-2.3.3*

    (from https://www.macports.org/install.php)

  • 但是

    sudo port selfupdate sudo port install dpkg

    這里 時候,我的時候,根本不動了,毛網速沒有啊....

    方法二:

    • 通過brew來安裝

    brew的作者最近不是去了apple了嗎?哈哈,以前配置號brew后,來下載就方便多了.

    brew install dpkg

    不到1分鐘就可以下載好了. 真是給方法一給跪了.

    步驟3:開始編寫Teak應用

    a 創建工程

    選一個目錄,存放工程.

    zx:theosCode zx$ pwd/Users/zx/documents/theosCode?zx:theosCode zx$ $THEOS/bin/nic.plNIC 2.0 - New Instance Creator------------------------------ [1.] iphone/application [2.] iphone/library [3.] iphone/preference_bundle [4.] iphone/tool [5.] iphone/tweak(選這個)Choose a Template (required): 5Project Name (required): zxtestPackage Name [com.yourcompany.zxtest]: com.z2xy.zxtext(可選項,按enter,[]中的作為默認值)Author/Maintainer Name [zx]: zx(按enter,[]中的作為默認值)[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.apple.springboard(按enter,[]中的作為默認值)[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: SpringBoard(按enter,[]中的作為默認值)Instantiating iphone/tweak in zxtest/...Done.

    生成后的文件列表如下:

    xzx:zxtest zx$ pwd/Users/zx/documents/theosCode/zxtest?zx:zxtest zx$ tree.├── Makefile├── Tweak.xm├── control├── theos -> /usr/local/iOSTools/theos/└── zxtest.plist?1 directory, 4 files

    其中:

    • Makefiile文件用于自動化編譯
    • Tweak.xm類似于我們 業務函數,main函數
    • control是一些工程信息
    • zxtest.plist也是項目的一些工程信息
    • 還有一個符號鏈接指向我們的$THEOS的安裝目錄(最開始配置的環境變量)

    b.更改Tweak.xm文件

    x#import <SpringBoard/SpringBoard.h>?%hook SpringBoard?-(void)applicationDidFinishLaunching:(id)application {%orig;?UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"__z2xy__" message:@"from zxdev" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"好的",nil];?[alert show];[alert release];?}?%end

    上面引入了一個頭文件,然后替換了**applicationDidFinishLaunching方法的實現.

    一些語法 %hook,%orig,%end,倒是很像django的模板語法.

    這里不詳細講,見上的參考資料.

    c.編寫makfile

    xxxxxxxxxxARCHS = armv7THEOS_DEVICE_IP = 192.168.0.120 //(可選)zxtest_FRAMEWORKS = UIKit?include theos/makefiles/common.mk?TWEAK_NAME = zxtestzxtest_FILES = Tweak.xm?include $(THEOS_MAKE_PATH)/tweak.mk?after-install:: install.exec "killall -9 SpringBoard"?

    主要是添加了頭三行.

    • 第一行,指定了系統架構
    • 第二行,指定了同一局域網下的iOS設備的ip地址(需要根據自己的實際情況更換)

    查看iOS設備的ip地址的話,直接到手機的設置,wifi,連接 wifi下查看就可以了.

    如果需要自動安裝的話,可以去掉這行

    • 第三行,導入UIKit頭文件

    如果不導入文件編譯出錯,找不到符號,因為我們使用了UIKit中的UIAlertView.

    d: 編譯,安裝,運行

    方法一:

    需要指定iOS設備ip地址,需要設置好信任的證書.

    zx:zxtest zx$ make package installMaking all for tweak zxtest...make[2]: Nothing to be done for `internal-library-compile'.Making stage for tweak zxtest...dpkg-deb: building package `com.z2xy.zxtext' in `./com.z2xy.zxtext_0.0.1-1_iphoneos-arm.deb'.install.exec "cat > /tmp/_theos_install.deb; dpkg -i /tmp/_theos_install.deb && rm /tmp/_theos_install.deb" < "./com.z2xy.zxtext_0.0.1-1_iphoneos-arm.deb"Selecting previously deselected package com.z2xy.zxtext.(Reading database ... 4989 files and directories currently installed.)Unpacking com.z2xy.zxtext (from /tmp/_theos_install.deb) ...Setting up com.z2xy.zxtext (0.0.1-1) ...install.exec "killall -9 SpringBoard"

    方法二:

    • 編譯
    zx:zxtest zx$ makeMaking all for tweak zxtest... Preprocessing Tweak.xm... Compiling Tweak.xm... Linking tweak zxtest... Stripping zxtest... Signing zxtest...
    • 打包
    zx:zxtest zx$ make packageMaking all for tweak zxtest...make[2]: Nothing to be done for `internal-library-compile'.Making stage for tweak zxtest...dpkg-deb: building package `com.z2xy.zxtext' in `./com.z2xy.zxtext_0.0.1-2_iphoneos-arm.deb'.
    • 上傳到設備安裝
    xzx:zxtest zx$ scp com.z2xy.zxtext_0.0.1-2_iphoneos-arm.deb root@192.168.0.120:/var/root/com.z2xy.zxtext_0.0.1-2_iphoneos-arm.deb ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100% 2270 ? ? 2.2KB/s ? 00:00

    當然了,可以使用各種工具將此deb文件上傳到設備中,上面使用的是scp.

    第一個參數是本地文件路徑,第二參數目的路徑

    root@192.168.0.120指定了同一局域下的iOS設備,/var/root/指定的設備中的路徑,中間有一個冒號連接.

    • 在設備上使用iFile到/var/root/目錄下找到安裝包安裝

    如果上面的步驟錯誤的話,

    ununderstood data nember data.tar.xz

    參考: http://stackoverflow.com/questions/21013325/dpkg-error-contains-ununderstood-data-member,打包的時候,壓縮的方式和iOS設備上解壓縮的方式不一致導致的錯誤.

    方式是,替換$THEOS/makefiles/package/deb.mk文件中

    $(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

    為:

    $(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -Zgzip -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

    • 重啟設備,看到彈窗

    可以看到第一中方法簡便了不少,只需要指定iP地址和完成證書配置就可以一行命令搞定.

    步驟4: 證書設置(不用多次輸入密碼)

    • 刪除iOS設備對應的ip地址所在行

    ~/.ssh/known_hosts

    xxxxxxxxxx 192.168.0.120 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvTS9W8/88Z+9j2D/TBft/ns173ssWhBGQgMyBnSAzIdhmfVd830aq2/78MgKyadyGxD6xhF/LG9tP5ZshaeZB9 ? XjBjQnEtB0gTZjiyGJpBWFdXCLX/uxV35gwZnu11Ts/HQzdC4+n+eh9pqKR7vsaJP/gIiYqfz/oDchlHrf7bdicZ0yKFlOpilTP4WLgPz2Qqr96xGcn/3dwimFTuye5zAqqfUApjTS/ ? idKvJNOEsFo6lVkuyOmkbItTjp6MfQliNorOY8nvV0DRFx2+lmedRjtq6UNPTyjuLPx3ymZIg/uOazvB0CHs/Ta2kMZRe1bPl8VcHI5/AbL0i7VHQB1p
    • mac上生成證書
    $ssh-keygen -t rsa

    如果已經生成過整數,直接得到~/.ssh/id_ras.pub 公鑰就可以了.

    • iOS設置生成.ssh目錄

    ssh登錄到iOS設備,生成證書就可以了

    xxxxxxxxxx$ssh root@192.168.0.120zxde-iPhone:~ root# ssh-keygenzxde-iPhone:~ root# ls -ladrwx------ 2 root wheel ? 170 Sep 20 22:34 .ssh/
    • 用mac上的公鑰,替換掉iOS設備上的公鑰
    scp ~/.ssh/id_rsa.pub root@192.168.0.120:/var/root/.ssh/

    通過上面 的證書配置和iOS設備配置,

    只需要方法一的一行

    $make package install

    就可以實現,編譯,打包,上傳到設備,安裝deb包,運行.

    總結一些坑

  • 下載頭文件的時候,需要做一些替換,git倉庫克隆后都有里面居然有這個步驟的注釋!!!!(否則的話,打包就會出現找不到頭文件,知道不到符號之類的錯誤)
  • ldid簽名工具下載,直接去下載就好了,不要從源碼編譯了.
  • 配置MoblieSubstrate環境的話,直接從iOS設備上拷貝出來就可以了.
  • makefile中指定iOS設備的IP地址,省了不少時間,同時,導入頭文件,也是解決了找不到文件的錯誤.
  • 打包文件的解壓縮不一致導致的錯誤,
  • ununderstood data nember data.tar.xz

    參考http://stackoverflow.com/questions/21013325/dpkg-error-contains-ununderstood-data-member就好了.

    其實,有些問題在http://www.iphonedevwiki.net/index.php/Theos/Getting_Started 中已經給出了很好的回答

    .9?Undefined symbols

    9.10?Incompatible package compression

    只是最開始沒有看.

    最后,"步驟4: 證書設置(不用多次輸入密碼)”,使用后,方便了很多.

    最后的最后,這里還有一些列相關的資料:

    • http://security.ios-wiki.com/

    undefined

    總結

    以上是生活随笔為你收集整理的THEOS的第一个TWeak的成功创建的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。