# frida_python.py
import frida
session = frida.get_usb_device().attach('com.android.chrome')
source = """
Java.perform(function () {
var view = Java.use("android.view.View");
var methods = view.class.getMethods();
for(var i = 0; i < methods.length; i++) {
console.log(methods[i].toString());
}
});
"""
script = session.create_script(source)
script.load()
session.detach()
# python3 frida_python_send.py
import frida
session = frida.get_usb_device().attach('com.android.chrome')
# 1. メソッド名をリスト内に格納したい
android_view_methods = []
source = """
Java.perform(function () {
var view = Java.use("android.view.View");
var methods = view.class.getMethods();
for(var i = 0; i < methods.length; i++) {
send(methods[i].toString());
}
});
"""
script = session.create_script(source)
# 2. これはコールバック関数であり、"Text" を含むメソッド名のみがリストに追加されます
def on_message(message, data):
if "Text" in message['payload']:
android_view_methods.append(message['payload'])
# 3. メッセージを受信するたびにコールバックを実行するようにスクリプトに指示します
script.on('message', on_message)
script.load()
# 4. 収集したデータで何かを行います。この場合は単に表示するだけです
for method in android_view_methods:
print(method)
session.detach()
$ python3 frida_python_send.py
public boolean android.view.View.canResolveTextAlignment()
public boolean android.view.View.canResolveTextDirection()
public void android.view.View.setTextAlignment(int)
public void android.view.View.setTextDirection(int)
public void android.view.View.setTooltipText(java.lang.CharSequence)
...