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

  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 Like

我比较赞成用这个办法

1 Like

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

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

你还是转发杨超越吧。

4 Likes

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

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

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

能否重签名之后不改变Bundle Identifier呢?没有多开的需求,只求单开。

不改bundleID,PP文件用的com.*通配符(用的开发证书,发布证书的bundleID不能用通配符),也还是能被检测出来有装插件;还做了addImage的hook,不会立马报检测,但是隔个几天之后就会

1 Like

没有金刚钻就不要搞微信,ball ball 你

1 Like

我接手项目的时候里面就有微信,也有做别的app,不过微信是主打,目前问题还严重不到我跟老大说我们把微信撤了老大也觉得嗯建议不错的地步啊;大神做过微信,求点拨努力方向啊:joy:

可以说,但没必要

为什么没必要,难道我这思路这风格一看就是搞不出来的节奏咩?:rofl::joy:

好神奇,学习了,但是我怎么弄都绕不过检测,每次都会被微信检测出来。 微信7版本应该是加了新的检测方法。

2 Likes

找到原因了没

@liuyi55222 @liuyi5521 以后CCTV应该把春晚小品换成让你上去表演用你拙劣的智商研究过微信检测和在这里找人做外包,我寻思喜剧效果能增加十万甚至九万倍

1 Like