美文网首页
逆向实战 (27)

逆向实战 (27)

作者: 为了自由的白菜 | 来源:发表于2021-07-13 17:31 被阅读0次

    用IDA分析MachO文件

    1. IDA -> File -> New instance
    2. New -> 新打开一个窗口
    3. 因为用的是虚拟机, 所以用File -> Open
      1. 选择All Files
      2. 开始分析 -> 黄色的小球代表正在分析 -> 绿色 -> 分析完毕
      3. 选择要分析的文件 (分析微信的项目, 花了三个小时...)
    4. 分析完毕后, 按空格进入

    MonkeyDev做符号的恢复

    1. 创建一个MonkeyApp
    2. Build Setting -> Monkey -> MONKEYDEV_RESTRORE_SYMBOL -> YES
    3. 用MonkeyDev进行符号的恢复 -> 再用IDA分析

    静态分析

    1. 要分析的方法OnOpenRedEnvelopes (上篇文章有定位到该方法)
    2. 同时要分享WCRedEnvelopesReceiveHomeView的头文件
      1. 打开微信头文件合集 (砸壳并class dump 拿到的)
      2. com + f -> @interface WCRedEnvelopesReceiveHomeView (好像指令是com + a) -> 跳转对应头文件
    3. 伪代码分析
      1. self.m_dicBaseInfo[@"isSender"] image.png
      2. 分析到代理, 调用了对应的方法

    动态调试

    1. hook代码如下, 来查看点击红包时的, 控制台的打印, 需要查下MSHookIvar
    %hook WCRedEnvelopesReceiveHomeView
    - (void)OnOpenRedEnvelopes{
        //MSHookIvar
        NSDictionary * dict = MSHookIvar<NSDictionary *>(self,"m_dicBaseInfo");
        NSArray * arr = [dict allKeys];
        //打印字典
        for(int i = 0;i < arr.count ;i++){
            NSLog(@"%@ : %@",arr[i],[dict objectForKey:arr[i]]);
        }
        //代理
        id delegate = MSHookIvar<id>(self,"m_delegate");
        NSLog(@"delegateClass:%@",[delegate class]);
        %orig;
    }
    %end
    
    1. 点看红包, 查看控制台打印的数据 image.png
    2. 从上面的截图, 可以看出来
      1. 代理类 -> WCRedEnvelopesReceiveControlLogic
      2. 然后继续分析IDA解析的汇编 image.png
      3. 发现代理调用的方法是 -> WCRedEnvelopesReceiveHomeViewOpenRedEnvelopes

    静态分析代理方法

    1. 在IDA中搜索WCRedEnvelopesReceiveHomeViewOpenRedEnvelopes
    2. 发现有:结尾的, 这种是带有参数的意思, 而这里我们分析不带参数的 image.png
    3. 找到方法后, 右边可以双击, 发现最终调用的还是带参数的
      1. 上面可以看出来参数为0, 也就是#0
      2. 伪代码{[self WCRedEnvelopesReceiveHomeViewOpenRedEnvelopes:0];}
    4. 继续往下进行静态分析
      1. image.png
      2. image.png
      3. 这里是初步静态方法分析, 那么实际开发过程中, 要静态分析和动态调试相结合, 上面分析完之后, 要动态调试Hook打印验证并查看一下上面的对象是什么东西.

    动态调试代理方法

    1. 经过上面分析, 我们要进行相应的方法hook, 并打印验证 image.png
    2. 这里注意:
      1. 要进行相应属性的声明 (要去头文件里面查找验证是否有相应的方法)
      2. 注意声明的顺序, 顺序错误也会报错 image.png
    3. 然后运行代码, 注意USB要先映射
    4. 点击打开, 查看控制台打印如下 image.png
    5. IDA里面还有个非常好用的功能 -> F5查看当前汇编的伪代码. image.png
    6. 通过伪代码的分析, 更加应征了我们上面静态分析的结果
    7. 接下来我们要通过IDA的伪代码来继续分析.
      1. com + A
      2. 右键 -> HTML
      3. 打开刚才生成的HTML文件

    相关文章

      网友评论

          本文标题:逆向实战 (27)

          本文链接:https://www.haomeiwen.com/subject/qmyspltx.html