creativet 发表于 2022-1-31 13:09

【求助】某鱼app逆向过程中,在进行hook的时候,报错'mtopsdk' is not defined"

使用frida进行hook某鱼的mtopsdk.xstate.XState.getValue(String instanceId, String key) 方法,想获取到instanceId和key的值,但pycharm中运行后,报如下错误:


{'type': 'error', 'description': "ReferenceError: 'mtopsdk' is not defined", 'stack': "ReferenceError: 'mtopsdk' is not defined\n    at <anonymous> (/script1.js:7)\n    at <anonymous> (frida/node_modules/frida-java-bridge/lib/vm.js:11)\n    at _performPendingVmOps (frida/node_modules/frida-java-bridge/index.js:238)\n    at <anonymous> (frida/node_modules/frida-java-bridge/index.js:213)\n    at <anonymous> (frida/node_modules/frida-java-bridge/lib/vm.js:11)\n    at _performPendingVmOpsWhenReady (frida/node_modules/frida-java-bridge/index.js:232)\n    at perform (frida/node_modules/frida-java-bridge/index.js:192)\n    at <eval> (/script1.js:28)", 'fileName': '/script1.js', 'lineNumber': 7, 'columnNumber': 1} None


某鱼app已经在手机上运行起来了,并且可以在pycharm中查到手机上运行的所有进程。hook其他方法没问题,就这个方法报错。有没有大佬遇到过,烦请指点指点。感谢~~

正己 发表于 2022-2-1 10:56

提示'mtopsdk' is not defined"
这个mtopsdk没找到,你是启动挂起吗?可能还没走到这个方法,报错也正常

creativet 发表于 2022-2-1 12:41

正己 发表于 2022-2-1 12:14
你代码怎么写的?发上来看看

代码如下,我hook其他方法的时候,也就是将JavaScript脚本里面的包、类、方法修改了一下,其他都没变。

=======================================================================
import frida
import sys

rdev = frida.get_remote_device()
session = rdev.attach("闲鱼")

# 目标:指定替换是那个包中的方法名
#   - 包名称:mtopsdk.xstate
#   - 类名称:XState
#   - 方法名:getValue
#       - 参数1:String instanceId,
#       - 参数2:String key
#       - 参数3:
#       - 参数4:
#       - 参数5:
#       - 参数6:
scr = """
Java.perform(function () {
    // 导入类
    var XState = Java.use("mtopsdk.xstate.XState");

    // 找到类中的方法进行hook
    mtopsdk.xstate.XState.getValue.implementation = function(instanceId,key){
      console.log("instanceId=>", instanceId)
      console.log("key=>", key)
      console.log("====================================")
      var res = this.getValue(instanceId,key);
      console.log(res);
      return res;
    }   

});
"""
script = session.create_script(scr)


def on_message(message, data):
    print(message, data)


script.on("message", on_message)

script.load()
sys.stdin.read()
=======================================================================

涛之雨 发表于 2022-2-1 07:58

@正己 大佬的教程说过,Python调用有时候会出各种各样乱七八糟的问题,
可以尝试直接使用命令行调用js

creativet 发表于 2022-2-1 11:40

正己 发表于 2022-2-1 10:56
提示'mtopsdk' is not defined"
这个mtopsdk没找到,你是启动挂起吗?可能还没走到这个方法,报错也正常

见附件图片。在hook getMultiAccountSid()方法是可以打印出结果的,按道理说,应该会去调用XState.getValue()方法。 但是,单独hook XState.getValue()方法,就报'mtopsdk' is not defined" 错误。

正己 发表于 2022-2-1 12:14

creativet 发表于 2022-2-1 11:40
见附件图片。在hook getMultiAccountSid()方法是可以打印出结果的,按道理说,应该会去调用XState.getVal ...

你代码怎么写的?发上来看看

正己 发表于 2022-2-1 13:35

creativet 发表于 2022-2-1 12:41
代码如下,我hook其他方法的时候,也就是将JavaScript脚本里面的包、类、方法修改了一下,其他都没变。
...

你js代码写错了,这pycharm不会提醒你,如果是控制台运行js就会报错,并且告诉你原因
Java.perform(function () {
    // 导入类
    var XState = Java.use("mtopsdk.xstate.XState");

    // 找到类中的方法进行hook,这里有传参要用overload传进去
    XState.getValue.overload('java.lang.String','java.lang.String').implementation = function(instanceId,key){
      console.log("instanceId=>", instanceId)
      console.log("key=>", key)
      console.log("====================================")
      var res = this.getValue(instanceId,key);
      console.log(res);
      return res;
    }   

creativet 发表于 2022-2-1 18:00

正己 发表于 2022-2-1 13:35
你js代码写错了,这pycharm不会提醒你,如果是控制台运行js就会报错,并且告诉你原因


谢谢大佬回复。 我增加了overload,还是会报错:wwqwq。 hookgetMultiAccountSid()方法 可以正常得到想要的值。见附件截图。





正己 发表于 2022-2-1 22:40

creativet 发表于 2022-2-1 18:00
谢谢大佬回复。 我增加了overload,还是会报错。 hookgetMultiAccountSid()方法 可以正常得到想 ...

你代码写的有问题,仔细看我发的

creativet 发表于 2022-2-1 23:00

本帖最后由 creativet 于 2022-2-1 23:46 编辑

正己 发表于 2022-2-1 22:40
你代码写的有问题,仔细看我发的
嗯嗯。已经发现了。我改成把js那部分的代码,专门写在一个js文件里,这样有啥错误编辑器也能及时发现,用三引号引起来了不容易发现错误。现在可以hook出值了。谢谢~
页: [1] 2
查看完整版本: 【求助】某鱼app逆向过程中,在进行hook的时候,报错'mtopsdk' is not defined"