吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3661|回复: 15
收起左侧

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

[复制链接]
creativet 发表于 2022-1-31 13:09
使用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()
=======================================================================

点评

你js代码写错了,这pycharm不会提醒你,如果是控制台运行js就会报错,并且告诉你原因 [mw_shl_code=javascript,true]Java.perform(function () { // 导入类 var XState = Java.use("mtopsdk.xstate.XStat  详情 回复 发表于 2022-2-1 13:35
涛之雨 发表于 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" 错误。

hook的方法

hook的方法

点评

你代码怎么写的?发上来看看  详情 回复 发表于 2022-2-1 12:14
正己 发表于 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就会报错,并且告诉你原因
[JavaScript] 纯文本查看 复制代码
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就会报错,并且告诉你原因
[mw_shl_code=java ...

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





hook getMultiAccountSid

hook getMultiAccountSid

报错

报错

点评

你代码写的有问题,仔细看我发的  详情 回复 发表于 2022-2-1 22:40
正己 发表于 2022-2-1 22:40
creativet 发表于 2022-2-1 18:00
谢谢大佬回复。 我增加了overload,还是会报错。 hook  getMultiAccountSid()方法 可以正常得到想 ...

你代码写的有问题,仔细看我发的
 楼主| creativet 发表于 2022-2-1 23:00
本帖最后由 creativet 于 2022-2-1 23:46 编辑
正己 发表于 2022-2-1 22:40
你代码写的有问题,仔细看我发的

嗯嗯。已经发现了。我改成把js那部分的代码,专门写在一个js文件里,这样有啥错误编辑器也能及时发现,用三引号引起来了不容易发现错误。现在可以hook出值了。谢谢~

点评

不客气,看你注册时间好像就是专门上来提问的哈哈,期待你的教程与作品  详情 回复 发表于 2022-2-1 23:05
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 20:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表