Buenas noches , voy a dar algunos consejos utiles a la hora de utilizar windbg , una especie de guia rápida de emergencia, cuatro tonterias rapidas que hay que tener en cuenta cuando vamos a depurar algun dump en un caso de uso del 100% de cpu por un proceso no esperado.
!runaway — Muestra ordenados por tiempo de uso de CPU los hilos de ejecucion de ese proceso.
~ns — donde N es el número de hilo del proceso , nos muestra el detalle de este hilo , s es de select , con esto tambien podemos hacer otras operaciones.
!gle numerodehilo – - gle es el acronimo de get lasterrors muesta el ultimo error de un hilo.
!peb – nos muestra los procesos que se estaban ejecutando en el momento del dump.
Tan solo con esto ya podemos indagar sobre alguna petada debido al exceso de cpu , por ejemplo el tipico proceso XXX.exe de descarga ilegal de porno.
0:042> !runaway
User Mode Time
Thread Time
20:91c 0 days 18:26:16.953
54:1890 0 days 4:51:45.859
60:1f08 0 days 0:16:41.343
58:1e08 0 days 0:16:32.750
11:528 0 days 0:06:31.718
39:1f40 0 days 0:05:51.140
42:142c 0 days 0:05:03.406
44:16b0 0 days 0:04:40.843
Con esto obtenemos un listado de los hilos que mas tiempo de CPU han gastado , en nuestro proceso de recoleccion XXX.exe vemos que el hilo 20 y 54 han gastado un gran tiempo de cpu asi que tenemos que averiguar que son.
0:042> ~54s
eax=00000033 ebx=02f94013 ecx=00000009 edx=02f3d4b8 esi=03870820 edi=02f94012
eip=607e02c3 esp=0302fec0 ebp=00000520 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
Pacentocratico!DllRegisterISAPI+0x5094:
607e02c3 7417 je Pacentocratico!DllRegisterISAPI+0x50ad (607e02dc) [br=1]
Santo cielo nos damos cuenta que este programa esta lincado a la maldita libreria pancetocratico.dll que peta mas que una escopeta de feria , puede que sea el motivo de nuestra petada , seguimos indagando y para ello hacemos lo siguiente:
0:054> !gle 54
LastErrorValue: (Win32) 0 (0) - La operaci n se ha completado correctamente.
LastStatusValue: (NTSTATUS) 0xc0000139 - {No se encuentra el punto de entrada} No se encuentra el punto de entrada del procedimiento %hs en la biblioteca de v nculos din micos %hs.
Bien nos ha devuelto una first chance exception es decir una excepcion controlada que nos dice que no se encuentra el procedimiento al que llamamos puede que se este el orgien de todos nuestros males.
Asi que como nuestro programa XXX.net es totalmente modular procedemos a descargar la dll maliciosa obteniendo bonitos resultados y echando la bronca a nuestros amigos desarrolladores por usar esa esa porqueria de dll , asi una vez mas nos vamos tranquilos a casa.
Este pseudoarticulo no es mas que una mini-introduccion burda y poco fiel de como podemos usar un volcado para ver por que un proceso copa nuestra CPU al 100%. , existen alguna herramientas como debugdiag que facilitan bastante las cosas.
Por otro lado recordaros a todos que es interesante tener todos los simbolos de depuracion posibles para poder hacer este tipo de cosas , asi que es aconsajable que en windbg metais el siguiente path en el symbol path file:
SRV*http://msdl.microsoft.com/download/symbols
Un saludo y enhorabuena a los premiados.