美文网首页
记录一次frida反调试

记录一次frida反调试

作者: 萌木盖 | 来源:发表于2023-05-05 16:52 被阅读0次

    前言

    首先是我有个app,我就不说是谁了,里面的反调试是libmsaoaidsec.so实现的。
    然后看到一个文章bilibili反调试
    有两个问题

    • 1是写的没那么详细
    • 2是ThumbWriter 未定义 报找不到的异常

    找方法偏移地址

    他写的我就不重复写了

    主要就是找地址


    image.png
    image.png
    image.png

    偏移地址分别为1AEE4,1A574

    找pthread_create创建的地址

    打开ida 搜索pthread_create , 双击


    image.png

    交叉引用


    image.png
    image.png
    看最后两个
    image.png

    sub_7DE0就是pthread_create,上面的箭头熟悉吧1AEE4 刚才找的便宜地址 ,说明就是这里。
    另一个同理,那就nop掉这两个就可以了。

    找nop 地址

    image.png

    1A5B0+2A8 = 0x1A858 1B88C+28 = 0x1B8A8

    对原论坛代码进行修改

    function bypass(){
        var module = Process.findModuleByName("libmsaoaidsec.so")
        // 32位
        // nop(module.base.add(0x10AE4))
        // nop(module.base.add(0x113F8))
        // 64位
        nop(module.base.add(0x1A858));
        nop(module.base.add(0x1B8A8));
    }
    

    nop方法 ThumbWriter方法会提示找不到 64要用Arm64Writer 且putNop要写四个 32位写两个

    function nop(addr) {
        Memory.patchCode(ptr(addr), 4,
                code=>  {
            // 64位
            const cw = new Arm64Writer(code, { pc: ptr(addr) });
            // 32位
            // const cw = new ThumbWriter(code, { pc: ptr(addr) });
            //  32位putNop两次       64位要putNop四次
            cw.putNop();
            cw.putNop();
            cw.putNop();
            cw.putNop();
            cw.flush();
        });
    }
    

    为啥个数有区别呢?


    image.png

    结语:
    还有其他方式也能过 我就卖关子了 :)奸笑

    相关文章

      网友评论

          本文标题:记录一次frida反调试

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