【问题标题】:Frida +Python+Javascript what does "java.use ("XXX") " do when the class can not be found?Frida +Python+Javascript 找不到类时“java.use(“XXX”)”怎么办?
【发布时间】:2020-04-07 21:01:15
【问题描述】:

我在 python 中(在 android + frida 环境中)使用以下 javascrip 来挂钩一个方法。

jscode ="""
Java.perform(function () { 
    console.log("start hook...");
    var d =java.use("myapp.okhttp3.internal.f.a");
    d.verify.implementation =function(p1, p2){
    console.log("ssl unpinning for"); 
    return true; 
    }
});
""" 

这是python文件:

import sys  
import os  
import threading  
import subprocess  
import frida  
import time


jscode ="""
Java.perform(function () { 
    console.log("start hook...");
    var d =java.use("myapp.okhttp3.internal.f.a");
    d.verify.implementation =function(p1, p2){
    console.log("ssl unpinning for"); 
    return true; 
    }
});
"""  
os.system('adb forward tcp:27042 tcp:27042')  
os.system('adb forward tcp:27043 tcp:27043')  

APP_NAME = 'myapp'   
device = frida.get_usb_device(1)
pid = device.spawn([APP_NAME])  
device.resume(pid)  
time.sleep(1)  
process = device.attach(pid)  
print('success')
script = process.create_script(jscode) 
print(pid) 
script.load() 
print('script loaded') 
input()

我的问题是:var d =java.use("myapp.okhttp3.internal.f.a")在找不到类的时候会抛出“class not found exception”吗,如何查看这个异常?我可以使用 console.log(java.use("myapp.okhttp3.internal.f.a") 之类的代码来记录“类未找到异常”吗?

【问题讨论】:

    标签: javascript python android hook frida


    【解决方案1】:

    js中可以使用环绕try-catch,python中可以使用catch@handle

    try {
      var d =...
    } catch (e) {
      send(JSON.stringify(e));
    }
    

    在python端

    def on_message(msg, _data):
      # check if msg has error and handle
    
    script.on('message', on_message)
    

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 2020-08-15
      • 2016-09-08
      相关资源
      最近更新 更多