Pregunta:
Cómo utilizar fastloghook en el depurador de inmunidad
user2464
2013-07-17 07:26:20 UTC
view on stackexchange narkive permalink

¿Cómo funciona fastloghook en la sección pycommand del depurador de inmunidad? No puedo resolverlo. Todo lo que intento no funciona y sé que este código es un desastre. En serio, no entiendo fastloghook, lo que me vuelve loco cuando bphook funcionó tan bien. Necesito una explicación: /

  #! / Usr / bin / env pythonimport immlibimport structfrom immlib import FastLogHookdef main (args): "" "Conectará y ejecutará su propio código de ensamblaje y luego devolverá el control" "" imm = immlib.Debugger () # Establecer nameName = "hippie" fast = imm.getKnowledge (Name) if fast: hook_list = fast.getAllLog () imm.log (str (hook_list)) imm.log ("% s "item [1 [0]]) # Instanciar fastloghookfast = immlib.FastLogHook (imm) # Dirección principal para conectar tofast.logFunction (imm.getAddress (" msvcrt.strcpy ")) # Toma registro y desplazamiento. desreferenciar parámetros de la pila # o capturar datos en un desplazamiento conocido de un registerfast.logBaseDisplacement ('ESP', 0x4) fast.logBaseDisplacement ('ESP', 0x8) # Realiza un seguimiento del valor de un registro específico cuando el gancho es hitfast.logRegister ("ESP") # Registra el desplazamiento de memoria conocido en el momento del enlace # fast.logDirectMemory () # Establece el hookfast.Hook () # Guarda los datos para que podamos recuperar los resultados laterimm.addKnowledge (Name, fast, force_add = 1) return "LogBPHook instalado "`  
One responder:
PSS
2013-07-17 08:24:33 UTC
view on stackexchange narkive permalink

FastLogHook es uno de los 13 tipos de enganches con los que viene Immunity Debugger. Esencialmente, el propósito de este tipo de gancho es utilizar un pequeño talón de ensamblaje para transferir la ejecución a una función de gancho para registrar registros particulares y / o ubicaciones de memoria. FastLogHook es esencialmente un objeto de Python, lo que nos permite configurar el hard hook de manera relativamente fácil.

La definición de setup es la siguiente:

  debugger = immlib.Debugger () fast_hook = immlib.FasLogHook (depurador) fast_hook.logFunction (dirección, número_de_argumentos) fast_hook.logRegister (registro) fast_hook.logDirectMemory (dirección) fast_hook.logBaseDisplacement (registro )  

logFunction () nos devuelve la dirección de la instrucción original que necesitamos sobrescribir con el salto a nuestra función de gancho. Es absolutamente necesario.

logRegister () , logDirectMemory () y logBaseDisplacement () son métodos para rastrear valores específicos de un registro particular, ubicación de memoria, o cierto desplazamiento del registro respectivamente en el momento del gancho.

FastLogHook no interrumpirá la ejecución y registrará sin problemas los resultados en el objeto depurador. BpHook por otro lado es un tipo de gancho totalmente diferente. Cuando se llama a BpHook , detendrá la ejecución.

Oh, ahora me siento realmente estúpido, pensé que el depurador de inmunidad después de la primera ejecución del script invocó el script por sí mismo y registró el resultado en mi ventana de registro. Pero tengo que ejecutar el script nuevamente para obtener el resultado.
Exactamente. Hasta donde llega tu guión. logFunction tiene el siguiente prototipo logFunction (dirección, número_de_argumentos). Si number_of_arguments no es nada, como lo ha hecho, lo más probable es que intente enganchar la salida de la función. Para conectar el punto de entrada, debe proporcionar un número de argumentos como 2. Además, logDirectMemory (dirección) requiere una dirección para iniciar sesión. A la tuya le falta esa parte también.


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...