Early hooking on Android
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- android, javascript, python
Línea de trabajo
Comienza con android-hook.py y el JavaScript inyectado; después, revisa las dos incidencias relacionadas con el comportamiento de spawn, attach, script loading y RPC lifecycle de Frida. Reproduce la primera llamada a onResume que se pierde y el caso del Promise destruido junto con el script; se considera terminado cuando el enfoque documentado instala de forma fiable los hooks tempranos antes de reanudar el proceso de Android y mantiene vivo el script.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I'm trying to spawn an Android process and hook all calls to early executing methods like System.loadLibrary and Activity.onResume.
However, either my hooks don't get applied at all, or they get applied too late.
What is the correct way to do this?
My android-hook.py:
import frida
import sys
scriptname = sys.argv[1]
procname = sys.argv[2]
with open(scriptname, "r") as f:
script_content = f.read()
# define callback function to receive and output messages
# received from server
def on_message(message, data):
print(message)
device = frida.get_usb_device(1) # Parameter '1' adds a timeout. Otherwise, frida often raises a frida.TimedOutError
pid = device.spawn([procname])
session = device.attach(pid)
script = session.create_script(script_content)
# setup callback using function defined above
script.on('message', on_message)
# load script into the process
script.load()
# resume process, otherwise nothing will happen
device.resume(pid)
# read from stdin to keep script running
sys.stdin.read()
My injected script:
'use strict';
setImmediate(function() {
console.log('init')
Java.perform(function () {
console.log("hooking");
var activity = Java.use('de.nioncode.fridasample.MainActivity');
activity.onResume.implementation = function () {
send("onResume");
this.onResume();
};
console.log("hooking done");
send("initialized");
});
console.log('init done')
});
This variation performs the hooks too late, thus missing the first 'onResume' call.
I tried to use the rpc mechanism in combination with a Promise to defer the continuation until I call resolve on the Promise. However, this resulted in an frida.InvalidOperationError: script is destroyed error. This was my attempt with the Promise script:
rpc.exports = {
init: function() {
console.log('init')
return new Promise(function(resolve, reject) {
console.log('init2')
Java.perform(function () {
console.log("hooking");
var activity = Java.use('de.nioncode.antidebug.MainActivity');
activity.onResume.implementation = function () {
send("onResume");
this.onResume();
};
console.log("hooking done");
// resolve the Promise, telling Frida to continue executing
resolve();
});
console.log('init2 done')
});
}
};
Related to:
https://github.com/frida/frida-python/issues/50
https://github.com/frida/frida/issues/13
- Lenguaje dominante
- Python
- Estrellas
- 872
- Forks
- 173
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de frida/frida-python
-
Custom agent with Java bridgeAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
frida/frida-python#265 · 2 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
frida/frida-python#262 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
frida/frida-python#247 · 2 comentarios · 2 reacciones ·
-
After a long period of hooking applications on Ubuntu, Python and JavaScript are unable to interact.Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
frida/frida-python#246 ·
-
How can I connect to Ipv6?Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
frida/frida-python#243 ·
Todos los issues de frida/frida-python
Issues similares
-
bug status/needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
prowler-cloud/prowler#12887 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area: desktop platform: macos priority: p3 status: ready type: enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
use-agent-os/agent-os#3484 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
open-telemetry/opentelemetry-python-contrib#5113 · 2 comentarios · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
external
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
langchain-ai/docs#6255 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día