非越狱环境下自动抢红包的实现原理

如360前天公布的"腹黑微信",可以在非越狱环境下实现自动抢红包;对"非越狱"这个点非常感兴趣,猜测一下可能的做法:
因为是在非越狱环境,所以我认为只可能是改动了原来app的汇编代码。

360可能是在原来监听微信消息的方法里面,简化了原有汇编的逻辑,空出来了一部分空间来插入自己的代码,也就是生成红包数据,发起抢红包请求; 最后如果空间还有剩余就补上Nop指令;
完成一个这样精心设计的app后,使用企业证书重新签名;

想请教一下,我这种思路是对的吗?

我也很感兴趣,关注一下

这个APP具体叫什么名字?

不对,你这个太麻烦了。应该是注入dylib,通过hook代码来改变原函数或添加新功能,然后再用个人开发者账号或者企业开发者账号签名

可问题是,非越狱环境,可以注入dylib吗?

可以。
objc方法,直接用runtime就行
其他的需要运行时对macho打补丁

明白了,objc的话,应该是通过修改可执行文件的Load Commands来实现注入dylb,然后使用runtime进行hook;
对macho打补丁怎么理解呢?

替换nlist结构体

你好,在非越狱下,hook苹果原生的app,可以做到,能否大概讲一下呢。
“objc方法,直接用runtime就行
其他的需要运行时对macho打补丁”
这两个步骤都应该是需要越狱后才能做到的吧?

你需要这个
http://drops.wooyun.org/papers/12803

原理类似这个

其实不难,步骤如下:
1.生成一个dylib,抢红包的Hook代码Github上早就有了,不过是Tweak的,但是没关系,方法都是一样的。
2.将微信APP敲壳注入dylib
3.对dylib和微信app重新签名
4.打包成IPA安装

1 个赞

我参照你的这个帖子,通过修改MachO中的LC_LOAD_DYLIB可以在越狱的机器上实现加载dylib并成功hook,但是在非越狱机器上安装同样的ipa,可以安装成功但是启动就闪退,错误如下,求大神指导:
Reason: no suitable image found. Did find:
/var/mobile/Containers/Bundle/Application/75D4CE47-2CCF-44A5-9857-F8C14C6A96BC/RootApp.app/rootapp-captainhook.dylib: mmap() errno=1 validating first page of ‘/var/mobile/Containers/Bundle/Application/75D4CE47-2CCF-44A5-9857-F8C14C6A96BC/RootApp.app/rootapp-captainhook.dylib’

后面用同样的方法hook微信,可以安装成功但是无论是越狱机器还是非越狱机器都没有任何反应,像是没有加载我的 dylib

mmap好像是签名问题。没记错的话

:+1:, 重新对 dylib签名后 解决了在非越狱机器上闪退的问题。sigh resign 不会自动对新加的dylib签名。
通过修改MachO中的LC_LOAD_DYLIB hook自己写的app可以,但是同样的方式在微信上却无效,这里有什么讲究么?