leaveMeAlone
发表于 2015-8-26 12:22:49
编译楼主的文件报错啊,希望能够帮忙看下
** all for library wxlib...
In file included from wxlib.mm:8:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/dlfcn.h:37:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/sys/cdefs.h:680:2: error:
Unsupported architecture
#error Unsupported architecture
^
In file included from wxlib.mm:9:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/string.h:61:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/_types.h:27:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/sys/_types.h:33:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/machine/_types.h:34:2: error:
architecture not supported
#error architecture not supported
^
2 errors generated.
make: Nothing to be done for `internal-library-compile'.
飘云
发表于 2015-8-26 12:34:18
不是提示你错误信息了么。Google一下就解决了
leaveMeAlone
发表于 2015-8-26 12:46:28
飘云 发表于 2015-8-26 12:34
不是提示你错误信息了么。Google一下就解决了
google过很长时间才来问问题的,还是没找到解决方案 才斗胆来麻烦楼主的
飘云
发表于 2015-8-26 13:13:11
你的makefile帖上来看看
leaveMeAlone
发表于 2015-8-26 13:32:37
飘云 发表于 2015-8-26 13:13
你的makefile帖上来看看
ARCHS = armv7
TARGET = iphone:8.4:7.0
LOCAL_INSTALL_PATH = /usr/bin
include theos/makefiles/common.mk
LIBRARY_NAME = wxlib
wxlib_FILES = wxlib.mm
include $(THEOS_MAKE_PATH)/library.mk
麻烦楼主了
leaveMeAlone
发表于 2015-8-26 13:54:20
飘云 发表于 2015-8-26 13:13
你的makefile帖上来看看
用tweak编译是通过的 ,就是调用的时候会open不了 syslog里面的打印日志是这样的 err, dlopen, path:/usr/lib/libPYG.dylib
leaveMeAlone
发表于 2015-8-26 16:09:52
leaveMeAlone 发表于 2015-8-26 13:54
用tweak编译是通过的 ,就是调用的时候会open不了 syslog里面的打印日志是这样的 err, dlopen, path:/usr ...
为了检测是不是自己生成的dylib是否 有问题我到/usr/lib里面复制了一份系统的lib出来 然后改成 tweak编译的dylib一样的名字 再放回/usr/lib里面 重启手机 发现是出现dlopen错误,由此推断问题目前不是编译的dylib有问题 而是用16进制修改的时候出现问题了,但是这个字符串我都仔细对过了 没发现问题,真是费解了。
leaveMeAlone
发表于 2015-8-26 17:56:29
自己随便hook了一个app 然后open my.dylib发现是能打开的,排除是my.dylib的问题。
我去看了/usr/lib 目录下是没有libMobileGestalt.dylib这个库的 但是插件原来这么写却是调用成功的,我把my.dylib放到/usr/lib 是不行的 是不是意味着我要把my.dylib放到 libMobileGestalt.dylib真实所在库的同一目录呢
飘云
发表于 2015-8-27 09:00:43
leaveMeAlone 发表于 2015-8-26 17:56
自己随便hook了一个app 然后open my.dylib发现是能打开的,排除是my.dylib的问题。
我去看了/usr/lib 目 ...
libMobileGestalt.dylib是cache里面的{:soso_e103:}
至于调用不成功:
:观察log
:继续探索奥秘
排错是个痛并快乐的过程! 我之所以只贴代码不发bin就是让大家在实战中寻求突破!
到10月底还没成功我就发布个编译解说上来吧!
leaveMeAlone
发表于 2015-8-27 15:52:07
本帖最后由 leaveMeAlone 于 2015-8-27 16:07 编辑
飘云 发表于 2015-8-27 09:00
libMobileGestalt.dylib是cache里面的
至于调用不成功:
感谢飘大,现在另外一种思路,就是hook libMobileGestalt.dylib里面的MGCopyAnswer方法,这样是不是连十六进制的文件的修改都可以省略了。
于是我写了下面的方法(基本是照抄飘大的),可是发现 别的插件调用了MGCopyAnswer的时候 根本就没走我hook的新方法,希望能帮忙指正下。
#include <dlfcn.h>
#import <substrate.h>
static CFPropertyListRef(*orig__MGCopyAnswer)(CFStringRef);
CFPropertyListRef new__MGCopyAnswer(CFStringRef property)
{
NSLog(@"[****]into MGCopyAnswer........");
CFPropertyListRef value = nil;
if (!strcmp(CFStringGetCStringPtr(property, kCFStringEncodingMacRoman), "UniqueDeviceID")) {
value = @"edee5ca30793b14b71eb4f434f318677d2d1c925"; //正版uuid
}else{
void *handle = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY);
static CFStringRef (*$MGCopyAnswer)(CFStringRef);
$MGCopyAnswer = reinterpret_cast<CFStringRef (*)(CFStringRef)>(dlsym(handle, "MGCopyAnswer"));
if ($MGCopyAnswer) {
value = $MGCopyAnswer(property);
} dlclose(handle);
}
return value;
}
%ctor
{
void *h = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_LAZY);
if (h != NULL) {
void* p = (void*)dlsym(h, "MGCopyAnswer");
if (p!= NULL)
{
MSHookFunction( p, (void*)new__MGCopyAnswer, (void**)&orig__MGCopyAnswer);
}
dlclose(h);
}
%init;
}