Frida + Python + Javascript, что делает "java .use (" XXX ")", когда класс не может быть найден? - PullRequest
0 голосов
/ 08 апреля 2020

Я использую следующий javascrip внутри python (в среде android + frida) для подключения метода.

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") выбрасывает «исключение класса не найдено», когда класс не может быть найден, и как просмотреть это исключение? можно ли использовать такие коды, как console.log (java .use ("myapp.okhttp3.internal.fa") для записи "исключение класса не найдено"?

1 Ответ

0 голосов
/ 08 апреля 2020

Вы можете использовать try-catch в js и catch @ handle в python

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

In python side

def on_message(msg, _data):
  # check if msg has error and handle

script.on('message', on_message)
...