飘云 发表于 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;
}



飘云 发表于 2015-8-27 16:20:21

leaveMeAlone 发表于 2015-8-27 15:52
感谢飘大,现在另外一种思路,就是hook libMobileGestalt.dylib里面的MGCopyAnswer方法,这样是不是连十 ...

能实现就ok了!

这样做的优点是:可以不用管MD5
缺点是:需要重复的加入一个plist,不优雅~

页: 1 [2] 3
查看完整版本: VideoPane插件破解 - 基于正版锁定uuid