De nuevo les traigo un aporte de drivers, es una biblioteca On/Offline de Api's nativas.
Es algo que tratare de explicar con el poco o nulo conocimiento que me cargo en el tema.

Cuando programamos en ring0, muchas de las APIs que los pogramadores, dan por sentadas, no existen.
Tal es el caso de "MessageBox", si en un driver es llamado puedes conseguir un bonito pantallazo azul :)
¿A que se debe esto? Bueno para esto necesitamos saber la arquitectura del SO en el que deseemos programar.

En windows:
Imagen


Como vemos en la imagen existe una gran diferencia entre nivel usuario y nivel kernel.
Ahora con esa explicación gráfica, una API nivel usuario es una función que llama a otra función normalmente una en nivel kernel.
Pero previamente hace algunos procedimientos para llamar a la API, veamos un ejemplo.

La API "CreateProcess" en su definición en C es:
BOOL WINAPI CreateProcess(
__in_opt LPCTSTR lpApplicationName,
__inout_opt LPTSTR lpCommandLine,
__in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes,
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in BOOL bInheritHandles,
__in DWORD dwCreationFlags,
__in_opt LPVOID lpEnvironment,
__in_opt LPCTSTR lpCurrentDirectory,
__in LPSTARTUPINFO lpStartupInfo,
__out LPPROCESS_INFORMATION lpProcessInformation
);
Ahora sudefinición a nivel kernel, igualemente en C:
NTSYSAPI
NTSTATUS
NTAPI
NtCreateProcess(
OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ParentProcess,
IN BOOLEAN InheritObjectTable,
IN HANDLE SectionHandle OPTIONAL,
IN HANDLE DebugPort OPTIONAL,
IN HANDLE ExceptionPort OPTIONAL );
Como vemos cambia, lo que hace la API a nivel usuario es traducir, convertir, hacer calculos.
Creo que me fui muy al pedo y no explique nada, pero bueno les repito es el poco o nulo conocimiento que tengo.

A lo que vamos, es un compendio en formato .chm (Compiled HTML)
La biblioteca Online esta dando click en el apartado "About" y posteriormente dando click en "undocumented.ntinternals.net"

Descarga: [Enlace externo eliminado para invitados]

Saludos! y una disculpa si solo los confundi
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Buena info @orlando creo que si te tomas en serio las cosas y eso me gusta! Tengo documentacion un poco empolvada sobre rootkits pero al rato la subo! Gracias por compartir y te felicito ¡Tienes toda la actitud!
1337 & culture!
Es una tema muy interesante, vale la pena aunque sea darle una ojeada :)
Espero esa info, con ansias.

Saludos y Gracias
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Sí es correcto lo que hace una API es llamar a otra API que a su vez llamará a otra api o probablemente como bien dices a una nativa, y esto lo puedes ver claramente en el debugger, entrando con F7 a los call puedes observar la dirección en la que estas y a las apis que esta llamando la misma api, por ejemplo WriteProcessMemory->ntWriteVirtualMemory, la cosa es que también puedes cargar estas apis nativas fácilmente importandolas desde la ntdll.dll en ring3, sería interesante ver un ejemplo llamando a una de estas apis trabajando en ring0 supongo que uno se debe de liar con sysenter o interrupciones o algo similar para cambiar de modo
//mHmm..
Responder

Volver a “Manuales”