CodeHard

Artículos computacionales

dic 9, 18:51

Hola

Parecido al artículo Detrás del SpywareBlaster… está vez voy a hablar de un programa bastante conocido llamado ERUNT, utilidad para realizar backups del registro de Windows. A diferencia del sistema de copias de seguridad del regedit, este programa guarda de forma binaria todo el registro de Windows .

La idea de este artículo comenzó debido a mi intención de añadir una función similar ofrecida en este programa a mi aplicación RegUnlocker, de modo tal de ofrecer un sistema de backups más veloz y completo, además de ser mucho más útil a la hora de errores de sistema.

En un principio debo reconocer que no tuve suerte al deducir como funcionaba la aplicación. Sinceramente siempre pensé que copiaba los archivos de la propia copia de seguridad de Windows, (C:\WINDOWS\repair) lo que no explicaría el lento proceso necesario para su copia, o que se las ingeniaba para copiar directamente los archivos de sistema de Windows de la carpeta C:\WINDOWS\System32, lo que era totalmente descabellado, ya que requeriría un método tipo DLL Injection lo que no va con este tipo de aplicaciones. Pero, ¿por qué llegue a pensar tal funcionamiento? Todo se debió a que ERUNT crea un backup de las entradas del registro más importantes, y las nombra exactamente igual a su equivalente en Windows, es decir a los siguientes archivos:

  • DEFAULT
  • SAM
  • SECURITY
  • SOFTWARE
  • SYSTEM
  • NTUSER.DAT (uno por cada cuenta de usuario)

Luego, observando detenidamente los archivos creados, es fácil darse cuenta que no son iguales a los originales de Windows, lo que nos dice que esos archivos realmente salen de otro lado. Después de buscar en Google largo rato, no log´re encontrar ninguna solución concreta, así que procedí a fijarme que hace realmente la aplicación:

Lo que podemos ver en esa imagen es que la aplicación lo que hace es obtener el provilegio de acceso SeBackupName. Si investigan un poco en el msdn, podrán averiguar que este privilegio sirve para acceder a entradas del registro y archivos protegidos en modo de solo lectura, para poder ejecutar algunas funciones de backup. Además se hace una llamada a la función RegCreateKeyEx, que no solo sirve para crear claves en el registro, si no para obtener el HANDLE de la clave, (manipulador) de manera muy similar a la que trabaja la función CreateFile, la cual está destinada a archivos y directorios. Ahora, ¿por qué usa esa función en vez de RegOpenKey o RegCreateKey?

Para que vean más de cerca, en este caso se obtiene el HANDLE de la clave HKEY_LOCAL_MACHINE\SYSTEM”, pero si prestan atención verán que el valor del parámetro Options es REG_OPTION_BACKUP_RESTORE. Este flag es muy importante durante el proceso si se desea tener total acceso de lectura al registro, lo cual es necesario para realizar el backup.

Por último, aquí es donde viene la parte más interesante para mí, donde aparece una función que desconocía de la api Win32:

Seguro les va a ser necesario agrandar la imagen, pero podrán observar que en el momento de hacerse una llamada a una función llamada RegSaveKeyEx, el programa Filemon detecta la creación del archivo de backup. ¡Bingo! Por fin encontramos la función que guarda el registro al estilo ERUNT :)

Ahora veamos como podemos hacer los pasos anteriores programaticamente. Para eso utilizaremos C++ y la directiva windows.h. En primer lugar lo que hacemos es obtener los privilegios SeBackupName. Para eso obtenemos el HANDLE de nuestro proceso, luego creamos una estructura TOKEN_PRIVILEGES con el flag SE_BACKUP_NAME, la añadimos a nuestro proceso, y por último liberamos todos los HANDLES que utilizamos:

BOOL GetPrivileges() //Get SeBackup Privileges
{
BOOL bReturn = FALSE;
HANDLE hToken;
TOKEN_PRIVILEGES NewPrivileges;

if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken))
{
CloseHandle(hToken); return(FALSE);
}

if(LookupPrivilegeValue(0, SE_BACKUP_NAME, &NewPrivileges.Privileges[0].Luid)) {

NewPrivileges.PrivilegeCount = 1; NewPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED
}
else { CloseHandle(hToken); return FALSE; }

bReturn = AdjustTokenPrivileges(hToken, FALSE, &NewPrivileges, 0 ,0 ,0); CloseHandle(hToken);
return bReturn;
}

Creamos una función la cual reciba la entrada del registro a guardar y luego un nombre de archivo de salida y nos haga el backup automáticamente:

BOOL GetRegistryKey(HKEY RootKey, LPCSTR SubKey, LPCSTR FileName)
{ long lRval; HKEY hKey;

DWORD Result;

Result = RegCreateKeyEx(RootKey, SubKey, 0, NULL, REG_OPTION_BACKUP_RESTORE, 0, NULL, &hKey, NULL);

if (Result!=ERROR_SUCCESS) { cout << “Couldn’t Open Registry Key” << endl; GetErrorMessage(Result); RegCloseKey(hKey); return FALSE; }

Result = RegSaveKey(hKey, FileName, 0); if (Result!=ERROR_SUCCESS) { cout << “Couldn’t save Registry Key” << endl; GetErrorMessage(Result); RegCloseKey(hKey); return FALSE; }

RegCloseKey(hKey); return TRUE;
}

Por último, teniendo ya estas dos funciones, lo único que hacemos es elegir que claves o subclaves queremos guardar, un juego de niños. Aquí les muestro un ejemplo de una función main:

#include <cstdlib>

#include <iostream>

#include <windows.h>

using namespace std;

BOOL GetPrivileges();
BOOL GetRegistryKey(HKEY RootKey, LPCSTR SubKey, LPCSTR FileName);
void GetErrorMessage(DWORD err);

int main(int argc, char *argv[])
{ if (GetPrivileges()==TRUE) { cout << “Privileges got succesfully”<< endl; } else { return 1; }

if(GetRegistryKey(HKEY_LOCAL_MACHINE, “SAM”, “SAM”)==TRUE) { cout << “Sam backuped succesfully”<< endl; }

if(GetRegistryKey(HKEY_LOCAL_MACHINE, “SECURITY”, “Security” )==TRUE) { cout << “Security backuped succesfully”<< endl; }

if(GetRegistryKey(HKEY_LOCAL_MACHINE, “SOFTWARE”, “Software”)==TRUE) { cout << “Software backuped succesfully”<< endl; }

if(GetRegistryKey(HKEY_LOCAL_MACHINE, “SYSTEM”, “System”)==TRUE) { cout << “System backuped succesfully”<< endl; }

cout << “Finished” <<endl;
system(“PAUSE”);
return EXIT_SUCCESS;
}



void GetErrorMessage(DWORD err)
{
TCHAR msg[256];

FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, msg, 255, NULL);
cout << msg << endl;;
}

Conclusiones

Como ven no es nada difícil crear copias de seguridad mediante este método más allá de las ventajas que conlleva como la velocidad de creación y el tamaño de la copia. El único inconveniente es que la información se guarda en una especia de formato cifrado o binario por lo cual es imposible su edición, lo que lo vuelve inutilizable para ciertas tareas.

Saludos

No hay comentarios
nov 24, 20:17
Ubicado en

Seguramente si usas varios navegadores sabrás lo tedioso que es tener que cambiar de un navegador a otro, no porque uno quiera, si no porque no queda otra opción.

Lunascape pretende ser la solución a esta problemática: es un navegador que tiene la opción de alternar entre tres núcleos distintos:

  • Gecko (Firefox)
  • WebKit (Chrome, Safari)
  • Trident (Internet Explorer)

Esto permite, por ejemplo, acceder al mismo tiempo a páginas que necesitan determinado navegador (como es el caso de Windows Live Mail y Internet Explorer) o visualizar páginas tal cual se verían con determinado navegador. Además los programadores aseguran un mayor rendimiento que en los navegadores originales debido a ciertas optimizaciones obtenidas.

También hay que remarcar que todavía se trata de una versión alpha (previa a la beta) por lo cual es posible encontrar varios fallos. Por ahora solo está disponible en ingés y para plataformas Windows:

Pueden descargar el programa desde la página principal:

Lunascape Web Browser – The World’s Fastest Browser Ever

Saludos

No hay comentarios
abr 3, 19:49
Ubicado en

Hola a todos

Hace mucho que no me pasaba por aquí, debido a falta de tiempo y otras cosas que verán dentro de poco, pero como ya hable sobre la versión anterior no podía dejarlo pasar. Hay varios aspectos que quiero recalcar sobre esta nueva versión, y que tampoco he podido de la anterior, por lo cual lo haré todo en este. Aquí va mi análisis y mi opinión sobre Firefox 3 BETA 5.

En primer lugar, veamos las nuevas mejoras que trae esta versión:

Mejor integración con sistemas operativos: ahora Firefox utiliza los temas, iconos y estilos de los sistemas operativos Microsoft Windows, MacOS y GNU/Linux GTK.

Organizador de lugares: ahora puedes visualizar, organizar y buscar en todos tus marcadores, tags e historial de búsqueda a través de múltiples vistas y carpetas inteligentes para almacenar tus búsquedas frecuentes. También puedes crear y restaurar copias de seguridad cuando tu quieras.

Velocidad: mejoras en el motor JavaScript así como las dirigidas a las optimizaciones de perfil siguen mejorando la perfonmance. Comparado con Firefox 2, las aplicaciones web como Google Mail y Zoho Office funcionan el doble de rápido en Firefox 3 Beta 5, y el popular SunSpider test de Apple mustra mejoras con respecto a versiones anteriores.


Para ver todas las notas del release originales vea la página oficial en inglés.

Una vez expuesta las mejoras expuestas según Mozilla, que si bien son importantes no siempre son las más correctas, vallamos un poco más lejos y veamos que podemos ver en esta versión, y a ampliar un poco las mejoras que tiene esta nueva versión.

Si me preguntan a mí si noto un incremento de velocidad, la verdad es que sí, sobretodo como dice en las release notes en aplicaciones web, o al ver videos flash, por ejemplo. GMail funciona com una fluidez jamás vista, y los servicios de video como YouTube y MegaVideo parecen funcionar mejor.

Aunque como dije anteriormente, si bien esta versión es más veloz, tiene un alto consumo de memoria RAM, que para algunos equipos es una contra muy grande, y para otros realmente no es muy importante.

Ahora, ¿qué tan elevado es este consumo con respecto a otros navegadores?

Pues, voy a intentar ser lo más gráfico posible:

Para el que no tiene ganas de contar, le resumo que en esa imagen hay 25 ventantas abiertas de Firefox y otras 25 de Opera.

Ahora veamos los consumos de recursos de cada uno de los procesos:

Firefox

Firefox 3 BETA 4 - Consumo de memoria

Opera

No hay que saber mucho inglés para entender lo que hay en las imágenes. Definitivamente Firefox consume tres veces más memoria que Opera, y consume más recursos del microprocesador. Cabe destacar que cada ventana de Internet Explorer consume aproximadamente 25 MB, por lo cual si hacen el cálculo sabrán que 25 ventanas consumirían unos 625 MB, la verdad no hay palabras para esta cifra.

También quiero dejar claro, que el consumo de memoria no es proporcional a la velocidad de la aplicación, es decir que consuma más memoria no quiere decir que sea más lento. Por eso ahora viene la segunda pregunta.

¿Es más rápido Firefox 3 que otros navegadores?

Realmente es una pregunta la cual respuesta es difícil de comprobar, aunque tenemos varios tests para verificarlo. Entre los más destacados, podemos mencionar el SunSpider JavaScript Benchmark, el cual nos permite testear el rendimiento (tiempo de proceso) de JavaScript en los navegadores. Esta es la comparativa con respecto a los resultados de cada navegador:

Como ven, Firefox se muestra como el ganador absoluto, y se muestra una leve mejoría entra la BETA 4 y la BETA 5, seguidos muy de cerca por Safari. Opera e Internet Explorer duplican la velocidad de procesado.

Otro punto muy importante en los navegadores, es si cumplen o no con los estándares, algo muy importante si quieres un navegador que te permita visualizar todas las páginas y correr todas las aplicaciones correctamente. Para verificar esto, existe el famoso test Acid 3, de la página Web Standards Project. Aquí tenemos la comparativa de este test:

Si bien Safari se lleva el trofeo, es seguido por muy poco por Firefox, superando notablemente a Opera.

Esto confirma lo antedicho, que el consumo sea más alto no necesariamente significa que la velocidad sea menor.

¿Qué tan seguro es Firefox?

La pregunta que sí tiene respuesta, Firefox es el navegador más seguro. Firefox 3 incluye una larga lista de sitios maliciosos en su lista negra, por lo que si intentas acceder a ellos te encontrarás con una página como esta, además de ser el navegador del cual se resuelven más cantidad bugs en menos cantidad de tiempo, lo que para mí es lo más importante. Si quieres un navegador seguro, Firefox es la mejor elección sin duda alguna.

Conclusiones

Firefox consume mucha memoria, eso no se puede negar, aunque es un precio que hay que pagar por una navegador tan completo, con tantos plugins, con una seguridad excelente, y una perfonmance insuperable. Todavía falta para la liberación de la versión final, aunque las espectativas son grandes. Si tu equipo te lo permite, te recomiendo este navegador.

Se espera que la próxima versión sea la final, por lo cual intentaré analizarla nuevamente, y quizás haga una comparación con Opera, el cual para mí es otro de los mejores navegadores.

Agradezco cualquier crítica y comentario, como siempre.

Descarga Firefox 3 BETA 5 – Mozilla.com

Salu2

No hay comentarios

Búsqueda

Anuncios

Donación

Enlaces

    CodeHard por Mauro Ezequiel Soria
    Licenciado bajo Creative Commons