- Como los crashes del Explorador estaban aumentando drásticamente, al buscar la causa encontré en la pila un puntero de función parecido al de un malware
- Investigando más, resultó que no era malware sino un desinstalador
- El desinstalador, al terminar, espera para borrar su propio binario (Self Deleting)
- Este código usaba un método presentado en CodeProject hace 10 años
- Probablemente tenía que llamar a una función de alguna DLL, pero eso fue desviado (Detour) y por eso ocurrió
- Para borrarse a sí mismo, en vez de hacer inserción de código o desvíos en otro proceso (el Explorador), usa un archivo temporal como
cleanup.js, así:
- Este código se borra a sí mismo e intenta borrar también el desinstalador durante 20 segundos
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile("C:\\Users\\Name\\AppData\\Local\\Temp\\cleanup.js");
var path = "C:\\Program Files\\Contoso\\contoso_update.exe";
for (var count = 0; fso.FileExists(path) && count < 40; count++) {
try { fso.DeleteFile(path); break; } catch (e) { }
WSH.Sleep(500);
}
5 comentarios
Recuerdo aquellos tiempos en que usaba programas para eliminar residuos... Aun así, hoy en día Windows también está mejorando poco a poco sus gestores de paquetes, así que tengo expectativas. +_+
Creo que usaron mucho la palabra "altamente". Una ciencia suficientemente avanzada es indistinguible de la magia.
El título del artículo proviene de una frase del famoso escritor de ciencia ficción Sir Arthur C. Clarke.
Comentarios en Hacker News
LD_PRELOADde Linux