逆向实战 (28)

上次分析说明

  1. 将生成的html文件, 用Sublime Text打开继续分析 (主要是可编辑)
  2. 上次我们分析到了, v4是x21, 再去查看汇编代码, 发现x21是x0也就是self
  3. image.png

继续分析

  1. image.png
    1. 上面最后一句, 猜测返回是一个字典, 当然最好是打印出来看下
    2. image.png
    3. 注意: 语法%c来获取类方法名
    4. 注意: 要声明对应的类, 属性, 以及方法(要去对应头文件里找)
    5. 注意: IDA分析的微信版本号, 要与你手机安装的是统一版本
  2. image.png
  3. 验证了我们的猜想, 返回是一个字典, 注意后缀M, 是个可变字典
  4. image.png
  5. 运用同样的逻辑还原接下来的方法
  6. image.png
  7. image.png
    1. 推导出来v34跟x21有关系
    2. 通过分析汇编源码来定位方法调用者
    3. image.png

追踪类型的方式

  1. image.png
  2. image.png

block分析

  1. image.png
  2. image.png
  3. image.png
    1. 后面的 (a1 + 32)不知道是什么, 可以通过看汇编, 当然也可以调试加断点
    2. 调试
      image.png
    3. 原hook方法里添加 %orig来按原方法执行, 编译运行
    4. 附加进程到Xcode
    5. image list -> 拿到首地址
    6. dis -s 首地址+上面的地址, 注意上面的地址不能算第一个1
      image.png
    7. b 上面第一个地址(0x104ab20e0) -> 有加成功的回调
    8. c
    9. 点开红包触发断点
    10. register read x1 -> 方法名
      1. register read x2 -> 调用对象地址
      2. po 对象地址 -> 打印一下
      3. 结合上面我们还原的代码,我们发现x2是mutable_dic, 要对比, 如果不行就调试打印一下, 重写hook方法, 控制台打印url_dic来验证或者猜测.
      4. 经过验证猜测应该是mutable_dic
      5. 截止这里, 这个开红包的方法基本还原了

hook红包方法

  1. 将我们还原的方法粘贴过去并补充那些未定义的类
  2. 分类方法的声明
    image.png

新的问题

  1. 此时打开红包的代码已经还原
  2. 但是思考能不能直接在接收到红包消息的时候, 去完成调用开红包的方法呢?
  3. 有两个问题需要解决
    1. 参数mutable_dic
    2. 调用OpenRedEnvelopesRequest: (我们还原开红包方法后, 发现的真正的开红包的请求)
  4. 需要hook -> OpenRedEnvelopesRequest: 这个方法

还原OpenRedEnvelopesRequest:

  1. image.png
  2. 现在的问题, 在收到红包消息的时候, 能不能拿到dic, 用来调用开红包的方法
  3. 发现接收消息的第二个参数, 与开红包的必要参数是同一个参数

完成

  1. 只要将我们还原的代码, 移植到收到红包消息的hook方法里就可以实现自动抢红包了
  2. 遇到的问题
    image.png
  3. 如图,拿不到timingIdentifier
  4. 那么这个参数最有可能什么时候有呢 -> 猜测,点开红包消息, 并弹窗的那个时候

你可能感兴趣的:(逆向实战 (28))