• frida 出现 expected a pointer 的原因及解决办法


    py脚本直接注入的话,cocos2d游戏会暂停在黑屏导致hook失败。

    一开始以为是有反调试,采用 https://www.jianshu.com/p/87769bc0f19e 的办法,

    frida -U -f com.app -l script.js --no-pause
    

    (,其中-f 即spwan,在程序最先启动的时候注入。--no-pause是不暂停。这里就可以绕过正常程序反附加的保护措施,但是如果程序中还存在基于frida特征检测的代码,那么我们就需要根据其检测点,来bypass检测。)

    确实是不暂停了,但加载的test1.js:

    Interceptor.attach(Module.findExportByName("libcocos2dlua.so" , "luaL_loadbuffer"), {
    onEnter: function(args) {
    send("Function called!");
    },
    onLeave:function(retval){
    send("Bye bye!");
    }
    });

    却出了

    error:expected a pointer
    at frida/runtime/core.js:502
    at /test1.js

    的错误提示。

    从 https://www.codeleading.com/article/40892488269/ 发现是在刚启动的时候, libcocos2dlua.so 还没有加载,于是frida找不到这个 libcocos2dlua.so ,导致attach 失败了,报了这个错误。该网页但没有解决方案。

    最后在https://www.2cto.com/kf/201708/671160.html 发现,“再次运行代码,保持应用处于启动状态,我们的代码就能正常执行。具体操作为,先结束第一次运行的脚本,保持应用处于打开状态,再次运行脚本,点击“inspect using native code”按钮后,程序的运行状态如下图所示。”

    由此,尝试了:

    1、先运行frida服务端,端口进行转发;
    2、再在手机中运行目标apk,等一会,让它加载上 libcocos2dlua.so 【经测试,启动界面过后,到出现“进入游戏”这些字样时候,就
    加载上 libcocos2dlua.so
    3、再 frida -U com.app -l script.js --no-pause,
    (去掉了 -f 因为其中-f 即spwan,在程序最先启动的时候注入,带了F会从头启动一次,这时libcocos2dlua还没来得及加载所以会报错。)
    然后会attch上,等待so的调用然后hook之……就可以了

    --------------------

    ps:利用objecttion 可观察该程序在运行时都加加载了哪些so,观察so都有哪些导出函数,从而有的放矢hook到真正的函数名。(当然也可以反编译apk后找到 libcocos2dlua,再用IDA)https://www.anquanke.com/post/id/197657#h3-10

     

     
     
     
  • 相关阅读:
    LED点阵显示
    KEIL安装
    KEIL安装
    ubuntu安装svn
    python基础-面向过程编程
    js遇到代码出现问题时如何调试代码
    js内置对象的常用属性和方法(Array | String | Date | Math)
    js函数的使用+封装+代码复用
    JavaScript中条件分支语句和循环语句的使用,用简洁的代码实现强大功能
    JavaScript的语法、数据类型、基本算数和逻辑运算操作
  • 原文地址:https://www.cnblogs.com/codex/p/12728908.html
Copyright © 2020-2023  润新知