¿Cómo sé qué archivos se ejecutan cuando abro una aplicación?

12

Quiero saber qué sucede detrás de la pantalla cuando abro alguna aplicación. Por ejemplo, cuando abro firefox, quiero saber qué archivos se leen y cuáles se ejecutan. ¿Hay alguna manera de hacer esto? Incluso abrir firefox desde la terminal no muestra ninguna información. SO: Ubuntu 12.04

nitishch
fuente

Respuestas:

21

Uso strace!

Ejemplo: enumerar todos los archivos abiertos por Firefox durante una sesión:

strace -f firefox 2>&1 | grep 'open('

Resulta en algo como esto si abre una segunda instancia de FireFox: http://pastebin.com/iRqxgiWN (La opción '-f' simplemente hace que las horquillas sigan el proceso.)

Ejemplo 2: enumere todos los procesos ejecutados por FireFox:

strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('

Resultados en algo como esto al visitar YouTube:

[pid 25020] execve("/usr/lib/firefox/plugin-container", ["/usr/lib/firefox/plugin-containe"..., "/usr/lib/adobe-flashplugin/libfl"..., "-greomni", "/usr/lib/firefox/omni.ja", "-appomni", "/usr/lib/firefox/browser/omni.ja", "-appdir", "/usr/lib/firefox/browser", "15198", "false", "plugin"], [/* 57 vars */]) = 0
[pid 25024] execve("/bin/sh", ["sh", "-c", "ps x | grep netscape"], [/* 57 vars */]) = 0
[pid 25025] execve("/bin/ps", ["ps", "x"], [/* 57 vars */] <unfinished ...>
[pid 25026] execve("/bin/grep", ["grep", "netscape"], [/* 57 vars */]) = 0

También puede hacer esto con muchas otras llamadas al sistema ...

Al hacer coincidir los parámetros de open()en su grepbúsqueda, también puede averiguar en qué modo se ha abierto el archivo:

Simplemente agregue | grep -P 'O_RDONLY|O_RDWR'(¡el carácter de tubería inicial es importante!) Para filtrar el acceso de lectura o el acceso | grep -P 'O_WRONLY|O_RDWR'de escritura a su comando ...

EDITAR :

Como se mencionó en los comentarios, también puede usar strace -fe open firefoxpara enumerar todos los archivos abiertos por FireFox. También puede usar strace -fe trace=file firefoxpara enumerar todas las operaciones de archivo realizadas por FireFox que tienen una ruta de archivo como argumento (open, stat, lstat, chmod, access, ...).

¡Muchos más están disponibles! Consulte la página del manual de strace (1) .

alexander255
fuente
1
Estoy bastante sorprendido de que Firefox ejecute un shell para grep "netscape" de la lista de procesos.
Michael
1
strace tiene amplias capacidades de filtrado incorporadas. Intente strace -e openmostrar solo llamadas a open(), por ejemplo.
John Kugelman
@Michael genera un shell porque usa una tubería ("|") que es la sintaxis del shell. Puede configurar la misma tubería manualmente desde el código, pero es mucho más fácil dejar que un shell lo haga, siempre que sepa que no hay posibilidad de que el usuario pase códigos de escape del shell, lo que puede generar vulnerabilidades de seguridad.
Alistair Buxton
1

En realidad, hay un modo denominado modo detallado, pero no estoy seguro de que Firefox tenga esa opción. Algunos suelen tener eso. Pero no hay problema, cada aplicación constará de su registro. Para que pueda verificar la actividad de la aplicación, verifique sus datos de registro.

Si desea habilitar el registro para firefox, entonces puede verificar esto

http://bertrandbenoit.blogspot.in/2011/09/activate-logging-for-mozilla.html

cada actividad de la aplicación en Ubuntu se puede verificar con sus registros específicos. Todas las aplicaciones se registrarán en el /var/logdirectorio.

rɑːdʒɑ
fuente