上次分析说明
- 将生成的html文件, 用Sublime Text打开继续分析 (主要是可编辑)
- 上次我们分析到了, v4是x21, 再去查看汇编代码, 发现x21是x0也就是self
- image.png
继续分析
-
image.png
- 上面最后一句, 猜测返回是一个字典, 当然最好是打印出来看下
- image.png
- 注意: 语法%c来获取类方法名
- 注意: 要声明对应的类, 属性, 以及方法(要去对应头文件里找)
- 注意: IDA分析的微信版本号, 要与你手机安装的是统一版本
- image.png
- 验证了我们的猜想, 返回是一个字典, 注意后缀M, 是个可变字典
- image.png
- 运用同样的逻辑还原接下来的方法
- image.png
-
image.png
- 推导出来v34跟x21有关系
- 通过分析汇编源码来定位方法调用者
- image.png
追踪类型的方式
- image.png
- image.png
block分析
- image.png
- image.png
-
image.png
- 后面的 (a1 + 32)不知道是什么, 可以通过看汇编, 当然也可以调试加断点
- 调试 image.png
- 原hook方法里添加 %orig来按原方法执行, 编译运行
- 附加进程到Xcode
- image list -> 拿到首地址
- dis -s 首地址+上面的地址, 注意上面的地址不能算第一个1 image.png
- b 上面第一个地址(0x104ab20e0) -> 有加成功的回调
- c
- 点开红包触发断点
- register read x1 -> 方法名
- register read x2 -> 调用对象地址
- po 对象地址 -> 打印一下
- 结合上面我们还原的代码,我们发现x2是mutable_dic, 要对比, 如果不行就调试打印一下, 重写hook方法, 控制台打印url_dic来验证或者猜测.
- 经过验证猜测应该是mutable_dic
- 截止这里, 这个开红包的方法基本还原了
hook红包方法
- 将我们还原的方法粘贴过去并补充那些未定义的类
- 分类方法的声明 image.png
新的问题
- 此时打开红包的代码已经还原
- 但是思考能不能直接在接收到红包消息的时候, 去完成调用开红包的方法呢?
- 有两个问题需要解决
- 参数mutable_dic
- 调用OpenRedEnvelopesRequest: (我们还原开红包方法后, 发现的真正的开红包的请求)
- 需要hook -> OpenRedEnvelopesRequest: 这个方法
还原OpenRedEnvelopesRequest:
- image.png
- 现在的问题, 在收到红包消息的时候, 能不能拿到dic, 用来调用开红包的方法
- 发现接收消息的第二个参数, 与开红包的必要参数是同一个参数
完成
- 只要将我们还原的代码, 移植到收到红包消息的hook方法里就可以实现自动抢红包了
- 遇到的问题 image.png
- 如图,拿不到timingIdentifier
- 那么这个参数最有可能什么时候有呢 -> 猜测,点开红包消息, 并弹窗的那个时候
网友评论