Theos 工程

一、tweak 工程

  1、创建步骤

    a) terminal cd 到想要存放项目的目录下

    b) 按图步骤完成即可

  



二、工程文件描述

  1、control

    记录 deb 包管理系统所需的基本信息。

  2、appInfo.plist 描述 tweak 的作用范围,以下可混合使用

    a)  bubdles,tweak 控制的应用 bundle id

    b) classed, tweak 控制的 class

    c) executables tweak 控制的

  注意:如果 Filter 下的类别超过一个,需要加上 "Mode String Any"

  3、makefile  

    a) ProjectName = Tweak.xm,多个文件的时候改为 "= Tweakxm New.mm Objc.m"  

    b) ProjectName_FRAMEWORKS = UIKit 所依赖的框架

    c) 指定 ios sdk 版本,安装要求的版本

      下面两段意思是: 开发框架为 armv7,采用 7.1 版本的 sdk,且发布要求在 ios 7.1以上版本。    

ARCHS = armv7
TARGET = iphone:7.1:7.1

    d) 安装的时候需要指定设备的 ip address,故在最上面加上

THEOS_DEVICE_IP = 192.168.2.117

    

  4、Tweak.xm

    a) %hook

%hook ClassName

// 要 hook 的方法名

%end

  b) %log, 多个表达的时候加上 ","

%log((NSString*)@"abc", (NSString*)@"efg");

  c) %orig:调用原来的方法

  d) %group: 将 hook 分组, 如果不指定默认是 %group _ungrouped

%group name
% hook className

%end
%end

  e) %init(groupName): 不带参数等价于 %init(_ungrouped)

  f) %ctor {}: tweak 的构造完成初始化工作。

%ctor {
    %init;  // 如果此处没有初始化 _ungrouped,则所有属于 _ungrouped 的 hook 将不工作。
    %init(custom group);
}

  

  



三、部署和安装

  a) cd 到项目目录

  b) make:编译操作

    多次后会有提示  "make[2]: Nothing to be done for ",执行 "$ make clean"

  c) make package:打包

    出现错误:

Making stage for tweak FirstTweak...

/Applications/Xcode.app/Contents/Developer/usr/bin/make package requires you to have a layout/ directory in the project root, containing the basic package structure, or a control file in the project root describing the package.

make: *** [internal-package] Error 1

    原因:文件路径含有空格

  d) 在 makefile 中填写好设备的 ip address,并 ssh 连接设备 "$ ssh [email protected]" 再执行 "make package install" 。



四、清理编译打包产生的工程文件

$ make clean

$ rm -rf ./obj

$ rm -rf /Users/...../tweak project/_

  

Theos 工程,布布扣,bubuko.com

时间: 2024-10-13 13:53:49

Theos 工程的相关文章

Theos 工程make package时报错

错误: /Applications/Xcode.app/Contents/Developer/usr/bin/make package requires you to have a layout/ directory in the project root, containing the basic package structure, or a control file in the project root describing the package. make: *** [interna

教你动手做一个 iOS 越狱 app

前言 俗话说得好, 万事开头难. 仅仅是上图一个如此简单地不能再简单的小app, 其实都不算是app, 只是注入了一段代码进系统中, 等到特定的函数方法调用的时候就会被我们hook掉, 执行我们写的代码, 仅此而已. 哈哈, 就是这样一个小功能, 搞得我焦头烂额了一个晚上, 所以大家不用害怕, 连我这样的菜鸟都能实现, 大家只要认真看我的总结, 就一定可以自己也动手在自己越狱iPhone, iPad上嗨起来! ps : 为了纪念这神圣的一刻, 就算是这么简单的程序我也把它放到了我的Github上

THEOS的第一个TWeak的成功创建

THEOS的第一个TWeak的成功创建html, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { overflow-y: hidden; overflow-x: auto; } .CodeMirror-lines { padding: 4px 0px; } .CodeMirror pre { padding: 0px 4px; } .CodeMirror-scroll

Theos初步

[Theos初步] 1.安装Theos.Theos需要在mac和ios上均安装,ios上安装的是Theos服务器,以使得mac的thoes可以直接安装app到ios设备上.如果不需要使用此功能,则仅安装mac版即可. // 在.bash_profile中设置THESO变量 export THEOS=/opt/theos // 答出theos svn co http://svn.howett.net/svn/theos/trunk $THEOS // 把ldid移动到bin目录下 mv patht

iOS逆向工程之Theos

如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生.那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,Theos是越狱开发工具的首先,因为其最大的特点就是简单.大道至简,Theos的下载安装.编译发布都比较简单,越狱开发中另一个常用的工具是iOSOpenDev,因为本篇的主题是Theos,所以对iOSOpenDev不做过多赘述.本篇博客的主题是Thoes的安装及其使用. 一.Theos的配置与安装 Theos的配置与安装算是比较

[iOS越狱开发 之九]使用Theos开发SpringBoard的Tweat

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 前面讲到使用 [iOS越狱开发 之七]使用iOSOpenDev开发SpringBoard的Tweat,非常易用,但必须知道实质还是依靠Theos来创建,所以必须学会用Theos直接创建Tweat. 首先,通过theos/bin/nic.pl生成一个Tweat项目,步骤如下: 1.设置环境变量    export THEOS=/opt/theos 2.终端cd进入打算保存项目的文件夹 3.创建工程,终端输入 $THEOS/b

Theos简介

[Theos简介] Theos is a cross-platform suite of development tools for managing, developing, and deploying iOS software without the use of Xcode. The Theos suite of tools consists of a handful of important components: A project templating system (NIC), w

Theos

Theos 是一个越狱开发工具包,安装方法可以参考 Wiki. 安装 dpkg dpkg(Debian Packager) 是 Theos 依赖工具之一,可以使用 dpkg 制作 deb,Theos 开发的插件都会以 deb 的格式进行发布,在安装 Theos 之前需要安装 dpkg,安装借助于 Homebrew 安装,确保先安装 Homebrew. brew install dpkg 安装 Idid Theos 开发中,iOS 文件的签名使用 Idid 工具完成,代替了 XCode 中的 Co

C++工程编译之“error LNK2001: 无法解析的外部符号”

今天一整天都在折腾“error LNK2001: 无法解析的外部符号”,就在头疼不已的时候,总算是找到问题原因了:各个动态链接库的编译方式必须统一才行,要不然很容易对库函数的引用产生冲突.简单来说就是,如果使用的第三方函数库编译方式采用/MD,那么主工程也应该使用/MD.我使用了libevent,而主工程默认采用/MT,所以需要忽略一大堆的函数库,我还纳闷呢,怎么会这么奇怪!!今天总算是解决了长久以来的困惑了. 下面引用一篇文章的描述:[Z]VC运行库版本不同导致链接.LIB静态库时发生重复定义