frida ios下打印函数调用栈

一 目标

目标:了解一下frida ios下函数调用栈的打印
阅读时间:1分钟

二 打印堆栈

var getSecurityFactors = ObjC.classes.TBSDkSignUtility['+ getSecurityFactors:withApiName:withApiVersion:withProtocolParam:withBizParam:withHttpHeader:withUseWua:withRequestId:withInstanceId:'];
console.log('=>',getSecurityFactors)
var getSecurityFactors = getSecurityFactors.implementation
console.log('内存地址=>',getSecurityFactors)


Interceptor.attach(getSecurityFactors,{
    onEnter:function (args){
        // 这里FUZZY和ACCURAT可以切换着使用,在不同场景下,打印堆栈各有千秋
        // ACCURATE更准一些,但是FUZZY可以在任意二进制文件中打印
        console.log('Thread.backtrace = >',Thread.backtrace(this.context,Backtracer.ACCURATE))
        // 会把调用地址输出
        // 0x104ce793c,0x104ce6e48,0x104ce6a84,0x104cd8618,0x18e555298,0x18e556280,0x18e508254,0x18e5088e4,0x1d4200568,0x1d4203874,0x18e508868

        // 我们可以利用DebugSymbol.fromAddress 来获取符号信息
        console.log('DebugSymbol.fromAddress = >',DebugSymbol.fromAddress(ptr('0x1d4200568')))
        console.log('DebugSymbol.fromAddress = >',DebugSymbol.fromAddress(ptr('0x1d4203874')))

        // 连起来用就是
        console.log(Thread.backtrace(this.context,Backtracer.FUZZY).map(DebugSymbol.fromAddress).join('\n')+'\n')
    },
    onLeave:function (retval){
        console.log("hook onLeave")
    }
})

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Frida远程函数调用是指在Hook过程或者黑盒调用过程中,通过RPC来主动调用二进制文件的函数。这种调用方式可以实现一些基础的使用方式,也可以进行一些进阶的操作,比如构造疑难函数参数等。\[1\] 在Python脚本中,可以使用Frida库来实现远程函数调用。首先,需要通过adb命令将本地端口与设备端口进行转发。然后,使用Frida库连接到目标应用程序,并加载自定义的JavaScript脚本。在JavaScript脚本中,可以使用Java.perform函数来获取目标类,并重写其中的函数。通过调用send函数,可以将参数发送到Python脚本中进行处理。最后,使用script.load()加载脚本并执行。\[2\] 对于不知道参数的情况,可以使用普通的hook操作来获取参数的值。在JavaScript脚本中,可以使用Java.use函数获取目标类,并重写其中的函数。通过调用send函数,可以将参数发送到Python脚本中进行处理。\[3\] 总结来说,Frida远程函数调用是通过RPC来主动调用二进制文件的函数。可以使用Frida库连接到目标应用程序,并加载自定义的JavaScript脚本来实现远程函数调用。在JavaScript脚本中,可以重写目标类的函数,并通过send函数将参数发送到Python脚本中进行处理。 #### 引用[.reference_title] - *1* *2* [Frida系列--远程调用(RPC)](https://blog.csdn.net/qq_30135181/article/details/110136589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【frida逆向开发】frida-rpc远程调用某安app方法获取token](https://blog.csdn.net/weixin_44032232/article/details/111318871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值