theos能否给armv7s、64位系统开发tweak?

我按照《ios逆向工程》的第一个示例,尝试进行开发,theos 是git 的最新版本,make package install 都没有问题,但是tweak 就是不起作用!!!
我用的是 ipad air , iso 7.0.4 , google 了一圈发现theos 对于 64bit 的支持似乎有问题,不过我搜到的都是一个月以前的帖子了

想弄清楚:
1、github/DHowett/theos 应该是最官方的theos了吧,theos 是否支持 armv7s, 64bit的tweak开发?如果DHowett的theos暂时不支持,有没有那个 分支的 theos 支持?

2、如果theos 当前已经支持开发,应该怎么配置才能满足?对于Makefile 的配置是否有特定的要求?
ARCHS = armv7s
TARGET = iPhone:7.0:7.0

这么配置行不行?

Theos只是一个配合Logos语法的预处理器,是否支持arm64跟Theos没关系。但实际上,只要你拥有SDK7.0,Theos就是支持arm64的,Makefile里这么写:
ARCHS = armv7 armv7s arm64
如果tweak不起作用,应该是你自己的原因,你可以加一条NSLog看看有没有输出来判断一个函数是否被调用,也可以用lldb来调试看看

多谢,ARCHS = armv7 armv7s arm64 加上arm64 后就起作用了,之前tweak不起作用是函数根本hook 不到
顺便问一下,现在开发tweak 对于TARGET 怎么选择?
一般都会写成
TARGET = iPhone:6.1:4.3
这样么?

测试发现,当我给ARCHS 加上 arm64 之后
TARGET = iPhone:6.1:4.3就会报错,并且 iOS 6.1的SDK似乎也不支持64bit

ARCHS = armv7 armv7s arm64
如果
TARGET = iPhone:6.1:xx
错误
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/sys/types.h:95:9: error:
unknown type name ‘u_int64_t’
typedef u_int64_t u_quad_t; /* quads */
如果TARGET = iPhone:7.0:4.3
错误
error: invalid deployment target ‘4.3.0’ for architecture ‘arm64’ (requires
‘6.0.0’ or later)

这是不是以为这,同一个插件,如果想兼容 arm64,以及sdk 6.0 系统4.3,需要写两个Makefile 配置文件?

现在arm64能用的配置是:
ARCHS = armv7 armv7s arm64
TARGET = iPhone:7.0:6.0

这个书上也写到了,TARGET = iPhone:Base SDK:Deployment Target,其中Base SDK代表编译用的SDK版本,Deployment Target是最低兼容的系统版本。因为我只有iOS 5到7的机子,所以一般写成

TARGET = iPhone:latest:5.0

SDK6.x是不支持arm64的,现在arm64的机子只有iPhone 5s,原生iOS 7,所以你的目标SDK要设成7.0

TARGET = iPhone:Base SDK:Deployment Target
error: invalid deployment target ‘4.3.0’ for architecture ‘arm64’ (requires ‘6.0.0’ or later)

arm64 要求要求iOs 6.0 以后才行

你的

TARGET = iPhone:Base SDK:Deployment Target

是怎么写的?

theos支持armv7,armv7s 与 arm64,具体参看:

http://iphonedevwiki.net/index.php/Updating_extensions_for_iOS_7

ARCHS = armv7 arm64

TARGET = iphone:7.0:6.0

这样写报的错是“error: invalid deployment target ‘4.3.0’ for architecture ‘arm64’ (requires ‘6.0.0’ or later)”?

我的 Makefile 是这样写的,但是碰到下面的错误。
TARGET := iphone:8.1:1.0

Comment out the following line if using Xcode 4

ARCHS = armv7 arm64

clang: error: cannot use ‘objective-c+±cpp-output’ output with multiple -arch options

你TARGET里最后一项的版本太低了,难道你的tweak兼容iOS 1.0 ~ 8.1?我想不会吧!把最后一个改成8.0,估计就好了

1 个赞