Systrace para Windows


85

Estoy buscando un equivalente de Windows de Systrace o al menos strace . Soy consciente de StraceNT , pero me pregunto si hay más alternativas por ahí. Específicamente, estoy buscando una forma específica de aplicar mediante programación las políticas de llamadas al sistema, aunque esto puede ser después del hecho en lugar de detenerlas activamente.

¿Existe una buena forma de hacer esto actualmente?


Respuestas:


26

3
Sin embargo, se parece más a ltrace que a strace porque captura las llamadas a la biblioteca en lugar de las llamadas al sistema.
Michael

@BrunoMartinez: no necesita especificar una dirección de memoria para usar strace.
user2284570

38

Algunas opciones:

Monitor de proceso

Además, consulte este artículo sobre herramientas integradas en Windows 7:

Herramientas básicas del sistema operativo


3
Acabo de usar ProcessMonitor para averiguar por qué un proceso se bloqueaba; resulta que estaba tratando de acceder a un archivo que no podía eliminar ... nunca lo hubiera descubierto sin ProcMon
Jamie Cook

2
Utilizo strace bastante en Linux y encontré esta pregunta mientras buscaba una herramienta similar en Windows para solucionar el problema que tenía con NANT. Probé Process Monitor, configuré el filtro para incluir solo Nant.exe y excluyendo todo lo demás, también configuré el filtro para el acceso al registro solo donde tenía problemas y descubrí rápidamente el problema que estaba teniendo. Recomiendo ampliamente Process Monitor.
hshib

@ djhaskin987: En mi caso tengo un programa que carga algunos archivos; almacenarlos en ʀᴀᴍ (por lo que no queda ningún controlador) y bloquearlos. Como no hay manija, el monitor de proceso no ayuda.
user2284570

@hshib: el problema con el monitor de procesos es un proceso que no necesita un identificador para acceder a un archivo. Entonces, en un caso como el mío (tratando de ver qué archivo de configuración causa un bloqueo) , no es de ayuda.
user2284570

15

La herramienta Dr. Memory ( http://drmemory.org ) viene con una herramienta de seguimiento de llamadas al sistema llamada drstrace que enumera todas las llamadas al sistema realizadas por una aplicación de destino junto con sus argumentos: http://drmemory.org/strace_for_windows.html

Para aplicar políticas de llamadas al sistema mediante programación, puede utilizar los mismos motores subyacentes que drstrace: la plataforma de herramientas DynamoRIO ( http://dynamorio.org ) y la biblioteca de supervisión de llamadas del sistema DrSyscall ( http://drmemory.org/docs/page_drsyscall. html ). Estos utilizan tecnología de traducción binaria dinámica, que incurre en algunos gastos generales (20% -30% en estado estable, pero mucho más alto cuando se ejecuta un código nuevo, como el inicio de una gran aplicación de escritorio), que puede o no ser adecuado para sus propósitos.


11

API Monitor parece muy útil para este propósito.


Este es un programa excelente, muestra parámetros de función detallados / valores de retorno, le permite establecer un punto de interrupción cuando se cumplen ciertas condiciones, muchos métodos de enganche diferentes para que se pueda usar en muchos procesos que no les gusta ser inspeccionados.
Yuikonnu


3

strace está disponible en Cygwin en el paquete cygwin . Puede descargarlo desde un espejo Cygwin , por ejemplo:

http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
#      |                      |                              |     |
#      +-----------+----------+                              +--+--+
#                  |                                            |
#               mirror                                       version

strace es uno de los pocos programas de Cygwin que no se basa en la DLL de Cygwin, por lo que debería poder copiar strace.exedonde desee y usarlo.


6
Es bueno, pero solo parece funcionar en otros programas cygwin. No puedes strace notepad. Inicia el bloc de notas, pero no captura ninguna llamada al sistema.
Michael Fox

2
@MichaelFox: Sí, solo captura llamadas a cygwin1.dll.
user2284570


1

strace compatible con Git , como menciona Michael Fox. Quizás no sea útil para software complejo / windows.


0

Puede utilizar el monitor de proceso escrito por Mark Russinovich. Esta es una pequeña aplicación fantástica que le permitirá conectarse a cualquier proceso en ejecución en el sistema y ver todas las llamadas al sistema que ese proceso está realizando actualmente.

https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx


2
djhaskin987 ya mencionó Process Monitor en su respuesta anterior. Debes editar su respuesta y editar tu descripción en ella.
unforgettableidSupportsMonica
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.