p104页例子,出错,大神帮忙看看

%hook SBScreenshotter

- (void)saveScreenshot:(BOOL)screenshot
{
      %orig;
      NSLog(@"mytest is called!");
}

%end

makefile:

THEOS_DEVICE_IP = 192.168.1.101

include theos/makefiles/common.mk

TWEAK_NAME = MyTest
MyTest_FILES = Tweak.xm
MyTest_FRAMEWORKS = UIKit

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
	install.exec "killall -9 SpringBoard"

运行make package install出错:
/Users/lvdong1/code/mytest/theos/makefiles/targets/Darwin/iphone.mk:41: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak MyTest…
make[2]: *** No rule to make target obj/Tweak.xm.39e80057.o', needed by obj/MyTest.dylib.ba964c90.unsigned’. Stop.
make[1]: *** [internal-library-all_] Error 2
make: *** [MyTest.all.tweak.variables] Error 2。

------q请大神指教

你的makefile漏东西了,再看看书上的makefile是怎么写的

你是说加:
ARCHS = armv7
TARGET = iphone:6.1:4.3

加了还是出错

加了报什么错?

sh-3.2# make package install
Your current SYSROOT, “/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk”, appears to be missing.
make: *** [before-all] Error 1

这个应该是缺少SDK6我觉得。
汗那,我在家里的电脑和单位的电脑都试了,家里都不会报错,单位这个问题不断。(PS:家里和单位同时装的系统)
另外,家里的虽然没报错,iphone也重启了,可是syslog里就是看不到结果。应该是没HOOK成功。请教大神,咋办。

这个意思就是缺少SDK,你Xcode的SDK实际是什么版本,makefile里改成对应的版本就好了

没hook成功就总结归纳一下再发个新帖问问

THEOS_DEVICE_IP = 192.168.1.101
ARCHS = armv7
TARGET = iphone:7.1:4.3

include theos/makefiles/common.mk

TWEAK_NAME = MyTest
MyTest_FILES = Tweak.xm
MyTest_FRAMEWORKS = UIKit

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
        install.exec "killall -9 SpringBoard"

sh-3.2# make package install
Making all for tweak MyTest…
make[2]: *** No rule to make target obj/Tweak.xm.37d20960.o', needed by obj/MyTest.dylib.ba964c90.unsigned’. Stop.
make[1]: *** [internal-library-all_] Error 2
make: *** [MyTest.all.tweak.variables] Error 2

1 个赞

make clean

一下,再

make package install messages=yes

看看输出什么

sh-3.2# make package install messages=yes
Making all for tweak MyTest…
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f makefile --no-print-directory --no-keep-going
internal-library-compile
_THEOS_CURRENT_TYPE=tweak THEOS_CURRENT_INSTANCE=MyTest _THEOS_CURRENT_OPERATION=compile
THEOS_BUILD_DIR="." THEOS_MAKE_PARALLEL=yes
make[2]: *** No rule to make target obj/Tweak.xm.cb15499c.o', needed by obj/MyTest.dylib.ba964c90.unsigned’. Stop.
make[1]: *** [internal-library-all
] Error 2
make: *** [MyTest.all.tweak.variables] Error 2

ldid更换了吗?

sh-3.2# $THEOS/bin/ldid
usage: /opt/theos/bin/ldid -S[entitlements.xml]
/opt/theos/bin/ldid -e MobileSafari
/opt/theos/bin/ldid -S cat
/opt/theos/bin/ldid -Stfp.xml gdb
sh-3.2#

ldid需要怎么更换,请大神明示。

发现一个问题:你的所有操作都是以root权限完成的?
不要用root权限,再试一次看看

bogon:mytest lvdong1$ make package install messages=yes
Making all for tweak MyTest…
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f makefile --no-print-directory --no-keep-going
internal-library-compile
_THEOS_CURRENT_TYPE=tweak THEOS_CURRENT_INSTANCE=MyTest _THEOS_CURRENT_OPERATION=compile
THEOS_BUILD_DIR="." THEOS_MAKE_PARALLEL=yes
make[2]: *** No rule to make target obj/Tweak.xm.cb15499c.o', needed by obj/MyTest.dylib.ba964c90.unsigned’. Stop.
make[1]: *** [internal-library-all
] Error 2
make: *** [MyTest.all.tweak.variables] Error 2

我的意思是从新建工程开始,全用普通用户权限重来一遍试试看

是的,这两天我把能尝试的都试了,还是上面的提示错误

我不确定是不是因为你全都是sudo的,导致有些文件没有写权限导致的,你先拿用户权限重新试试