看了张总的那个关于MobileGestalt Hook的帖子,自己也试了下,从Github上下载capstone并按照如下方法打包了一个libcapstone.a的静态库
$ CAPSTONE_ARCHS=“arm aarch64 x86” ./make.sh
$ ./make.sh
$ sudo ./make.sh install
然后在make里添加了
MobileGestaltHook_LDFLAGS = -lz -L. -v -force_load ./libcapstone.a
编译后发现出现问题
“/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld” -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -no_deduplicate -dynamic -dylib -arch armv7 -dylib_install_name /Library/MobileSubstrate/DynamicLibraries/MobileGestaltHook.dylib -force_load ./libcapstone.a -iphoneos_version_min 6.0.0 -multiply_defined suppress -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk -ObjC -o /Users/yecongcong/Documents/mobilegestalthook/.theos/obj/debug/armv7/MobileGestaltHook.dylib -L/opt/theos/lib -L/opt/theos/vendor/lib -L. -lobjc -framework Foundation -framework CoreFoundation -framework CydiaSubstrate -segalign 4000 -lz /Users/yecongcong/Documents/mobilegestalthook/.theos/obj/debug/armv7/Tweak.xm.aeaf5e81.o -lstdc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/…/lib/clang/8.1.0/lib/darwin/libclang_rt.ios.a -F/opt/theos/vendor/lib
ld: warning: ignoring file ./libcapstone.a, missing required architecture armv7 in file ./libcapstone.a (2 slices)
Undefined symbols for architecture armv7:
“_cs_close”, referenced from:
_logosLocalCtor_344ae32b(int, char**, char**) in Tweak.xm.aeaf5e81.o
“_cs_disasm”, referenced from:
_logosLocalCtor_344ae32b(int, char**, char**) in Tweak.xm.aeaf5e81.o
“_cs_errno”, referenced from:
_logosLocalCtor_344ae32b(int, char**, char**) in Tweak.xm.aeaf5e81.o
“_cs_free”, referenced from:
_logosLocalCtor_344ae32b(int, char**, char**) in Tweak.xm.aeaf5e81.o
“_cs_open”, referenced from:
_logosLocalCtor_344ae32b(int, char**, char**) in Tweak.xm.aeaf5e81.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
用lipo -info 查看libcapstone.a
Architectures in the fat file: libcapstone.a are: i386 x86_64
是因为没有支持 armv7吗?还是啥?
新手上路,论坛老司机们多教教呗。