iOS 多开检测,反多开检测,反反多开检测

果然还是防不胜防啊

感谢。学习了,文章对我这种小白太有价值了。
读取文件的方式太多,mmap,等等。。。

感谢。学习了,文章对我这种小白太有价值了。
读取文件的方式太多,mmap,等等。。。

如果把加密的str 用ida什么的改了肿么办

用syscall来读取embedded.mobileprovision,检测开发者证书有没有被替换?

检查mach-o文件的有没有被修改…

好像记得以前讨论过,可以静态patch… 用张总黑科技,也不能防静态patch吧

1 个赞

私有版可以。参见hikari那贴最下面的demo LLVM混淆器Hikari - #141 - 干货分享 - 睿论坛 就是PatchMe那个。反调试反Patch+混淆

类似。具体的我在群里提过一嘴

玩的溜,膜…

请问syscall如何读取embedded 来校验app签名是否被替换?

他的意思就是普通的文件读取。不过为了逃避hook改写成了syscall而已

  1. 因为类簇的关系,文中替换NSDictionary的objectForKey方法应该是不起作用的。若是MUHook做了兼容,那就没有这个问题。
  2. 若这么替换的话,那NSMutableDictionary和CFDictionaryRef是否也考虑替换下。
  3. 有没有更好的替代方法,比如判断是谁打开Info.plist,如果可行可以避开替换方法太多的问题。

666, 小白学习了

666,小白学习了

我当时听说62的时候也懵逼了一下,后来一想,bin开头不是0x62吗,无语……

经测试iOS10/iOS11中所有对NSDictionary的访问都会调用-[__NSCFDictionary objectForKey:]
测试内容包括:

  1. [dict objectForKey:]
  2. [dict valueForKey:]
  3. dict[@“key”]
  4. NSBundle.mainBundle.bundleIdentifier
  5. [[NSBundle mainBundle] objectForInfoDictionaryKey:@“CFBundleIdentifier”];
  6. [NSBundle mainBundle].infoDictionary[@“CFBundleIdentifier”];
  7. [dict objectForKeyedSubscript:]

但是有个坑,hook的方法要这样写:
-(id)objectForKey:(void *)aKey

否则iOS11上容易crash,其原因是aKey有可能是0x1!根据0x1这个地址读取内容肯定会crash。

1 个赞

我比较赞成用这个办法

1 个赞

话说楼主的微信多开方法,能够持续运行超过2周嘛?
目前很少见到第三方的微信分身,能够存活超过2周的,一般一周左右微信就会自动弹出警告了,不知道微信是怎么检测的。。。

微信有一千种方法检测你的插件,仅仅只是干掉多开检测是远远不够的。最主要的还是看人品。。。

你还是转发杨超越吧。

4 个赞

张大,我直接调用dladdr里面的__ dladdr,找不到定义,是这个函数没有对外开放接口么?

我SB了,dyld里面的dladdr实现跟其它UNIX不一样

我这边只要key是CFBundleIdentifier 就直接崩溃