byczd
(byczd)
2016 年10 月 13 日 03:30
#1
iphone5s,越狱9.3系统
我通过dsc_extractor工具,将libMobileGestalt.dylib从dyld_shared_cache_arm64中导了出来。
然后加进Xcode工程中,然后编译的时候,提示如下错误:
我这个库是从dyld_shared_cache_arm64导出来的啊,为什么还会提示not found for architecture arm64呢?我lipo了libMobileGestalt.dylib,显示确实是arm64的。为什么Xcode中编译会出现此错误,求大神解答,该如何解决?
(PS:我用另一个越狱机子ios8.3的iphone5c,从里面导出的是armv7s的,然后加到xcode工程中,编译运行是成功的。感觉方法应该没错,不知道上面说的问题何解,求解答,多谢!)
Zhang
2016 年10 月 13 日 07:33
#2
dsc解出来的我之前看各种坑。MachO很多部分是损坏的。
建议直接dlsym动态解析libMG符号免得麻烦
byczd
(byczd)
2016 年10 月 13 日 07:38
#3
好的,那可能是损坏的原因了,我还以为是我哪里操作的不对。
谢谢大神,我再动态加载试试!谢谢!
Zhang
2016 年10 月 13 日 07:42
#4
我当时不管是Xcode自己拷出来的还是我手动用iFuse拿出来的decache出来vmaddr vmsize还有一个啥都是坏的。
byczd
(byczd)
2016 年10 月 13 日 10:13
#5
大神,我用动态链接的方式,在iphone5,及iphone5s的模拟器下运行,可以获取到UDID,而连真机(iphone5c ios8.3越狱机)上却返回为空值。我如果直接把库加进工程中,然后连真机(iphone5c ios8.3越狱机)测试,是可以获取到值的。请问这是什么原因?
我的写法如下图,是我的写法有问题么?
另外,请教一下,这个dlopen("/usr/lib/libMobileGestalt.dylib",…)中,这个"/usr/lib/libMobileGestalt.dylib"路径,在模拟器环境,及真机环境中,分别是指向哪里的?
敬请指教一下,谢谢!
byczd
(byczd)
2016 年10 月 13 日 12:30
#7
谢谢大神,确实是这样的,现在好了,在arm64的5s上用动态链接库的方式果然也能获取到了,谢谢!
byczd
(byczd)
2016 年10 月 14 日 02:47
#8
大神,再请教下libMobileGestalt的头文件,是怎么导出来的?我直接dump libMobileGestalt.dylib导不出来,但是我在theos的目录下,有找到它的头文件MobileGestalt.h,请问这个头文件,是怎么获取到的?