elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5
11  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 17:38 pm
Ok gracias, suficiente por ahora. Más tarde continúo. Ahora lo extraño es que me parece* que tengo la dirección de memoria pero nunca se detiene (*me parece).

Más tarde o sino mañana hago pruebas y leo lo que me dices.

En cuanto a "~" admiro tu interés pero el modo usuario es útil. ¿Acaso crees que Windows sin modo usuario seguiría vivo? resultados: discos quemados (jeje), Microsoft hackeada, etc.

Edito:
- No planeo usar modo usuario hasta, como dices, dejar todo bien configurado.

Citar
El hecho no es que haya estudiado la FAT. Yo entiendo la FAT12 hasta el nivel de leer el directorio raíz. ¿Este kernel actual tiene más capacidad que eso? Desde ahí se puede aprender mucho más.
- El kernel tiene más que eso.

¿Haz revisado mi penúltimo post?
12  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 17:17 pm
Eternal:

Me sale este error en el VS:

1>user.cpp(39): error C2094: la etiqueta 'eip' no estaba definida

Y los archivos que contienen el código asm no contienen las direcciones de memoria.

Mas cuando obtengo la dirección de la función y pongo un breakpoint con el bochs "b 0xC0004330" (enter) y luego pongo c (enter) y la palabra reiniciar en mi commandline (enter) no se detiene.

EDIT:

¿Está bien usarlo de esta forma?:

long mem;

_asm mov eax, eip
_asm mov mem, eax
13  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 17:08 pm
Por esto aconsejo ir rápido, pero también escuchar lo que otros tenemos que decir en lo que hemos intentado antes. En otras palabras, es mejor olvidarse en mayor medida del modo v86 virtual del modo de 32 bits y usar emulación de software, si uno no tiene drivers de video y aun así quiere poder cambiar modos de video.
.......


Mmm. Amigo no lo tomes a mal, pero sobre el modo usuario sólo es una alternativa para aislar las aplicaciones normales del kernel. No estoy TAN (!) obsesionado con eso. Sé lo que me dices. Llevo meses con ese kernel y he estudiado la FAT como tu.
14  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 16:41 pm
Gracias :D ya tengo la dirección. Todos se equivocan :) (yo)

Qué bonita dirección xD: 0xC0004330

Ups problema, creo que me equivoqué. La dirección que necesito es la dirección antes de ejecutar ese código verdad? yo la obtuve de la función a ejecutar. ¿Cómo obtengo la dirección de la posición actual? ni idea :S

Por sea caso: cuando pregunto algo siempre voy buscando y viendo la forma de solucionarlo, no me quedo estático esperando la respuesta.
15  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 16:11 pm
Desgracia: (xD)



Se pasó hasta abajo del código. Quería un breakpoint ahí.

voy a ver el enlace que me dejaste.

EDIT:

El problema es que quiero parar en una línea específica mas no en una parte de la memoria. La verdad que nunca pude hacer eso, ¿alguna idea? usé el trace y show pero muuuucho "trace" de lo que espero. Como hay varios controladores aparece un trace gigantesco (se cuelga y no continúa) y no logro captar el código que realmente quiero ver.

El Bochs debería tener un puerto (out) para hacer debug :P
16  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 15:54 pm
Ahi estaria peor ubicado cuando es necesario para la mitad de lo que mostras inline assembly  ;)

... todos los temas tratados estan mas cercanos a ensamblador que a C++.

Eso es cierto.

... tal vez debas buscar un foro especifico

¿Cómo así?

Aca no tenemos un sub-foro para desarrollo de Kernel/SOs,

Debería haber :D

Ahh y una pregunta. Estoy depurando con Bochs y quiero que mediante el código hacer un punto de interrupción ¿se podrá? (disculpen la ignorancia xD) Por ejemplo ejecutando int 0x3? o int 0x1?
17  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 15:39 pm
Todo el kernel está muy estable (obviamente el manual me ayudó un montón). Muchas cosas no las entendía pero poco a poco mientras modificaba el kernel tuve que leer un poco más para pasarlo a español las funciones y tratar de implementar el lenguaje C++ (orientado a objetos). Y discúlpenme pero creo que está mal ubicado el tema en asm (yo lo puse en C). Uso el IDE de Visual Studio porque acostumbro a crear múltiples algoritmos en un solo programa y así tener una gran librería ordenada. Para mi es bueno asm (ya que es ensamblador y no compilador, nasm y masm sí los comprendo muy bien). Comprendo lo de no usar tantas herramientas, pero mi entorno preferido, como dije, es y será siendo Visual Studio (>2010) ya que con él aprendí a programar. Y respecto a las referencias pues son las que todo el mundo usa. Osdev, Osdever, Wikipedia, Wikibooks, El tutorial de JamesM, entre otros. Existe otra que como veo no muchos la conocen y como veo que mucho insisten (no lo tomen a mal) no veo por qué no mostrarlo (Brokenthorn). Bueno ya lo dije, ejem.

¿Qué es lo que pretendo realmente hacer con el formato PE?
- Estudiarlo poco a poco para más adelante crear mi propio formato más liviano. Por qué digo más liviano: Porque para mi ese formato ocupa demasiado espacio en el disco y de esta forma el sistema operativo, aparte del tiempo que demora en buscar el archivo en la unidad de almacenamiento, demora en leer el archivo (ya que probablemente esté dividido en varios fragmentos) y cargarlo en la memoria.

- Crear una librería para mi sistema operativo y así crear aplicaciones en base a mi sistema operativo y de esta forma facilitar el llamado a syscall. Por ejemplo para leer un archivo usaría una sintaxis muy simple y en español.

Código:
Archivo archivo = SysAbrirArchivo("C:\\archivo.txt");
char* buffer = malloc(Archivo->Tamaño);
SysEstablecerPosiciónArchivo(archivo, 0); // es como un seek
SysLeerArchivo(archivo, buffer, Archivo->Tamaño);
SysCerrarArchivo(archivo);

Algo súper simple y entendible.

Todo esto lo digo porque tuve la oportunidad de leer un sistema operativo hecho en ASM con librería en C de 64 bits (que seguramente muchos saben de cuál se trata) que tenía syscalls e hice algunos programas en base a ese sistema (nasm y gcc).
18  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 14:01 pm
Es que eso solo en algunas versiones de Windows ni es un PE valido (al no importar ninguna funcion de ninguna DLL). Ademas es puro inline assembly ... pero bueno.

La idea de ejecutar el formato PE no es cargar sus librerías en la memoria y hacerlo todo como Windows (por decirlo así), más bien es crear un programa en Visual Studio y poder ejecutarlo desde mi sistema operativo; ya que me parece mucho más sencillo el asm inline de Visual Studio que el de gcc (y además es mi IDE favorito).

En cuanto a lo del syscall ya entendí. Déjenme solucionar algunos problemas con mi so. He detectado varios al desactivar la optimización: problemas con el stack, etc..

Ahora la última pregunta hasta que regrese de solucionar estos problemillas: ¿es posible ejecutar una interrupción que ejecute operaciones administrativas del IVT desde el modo usuario (RING3)? Tengo claro que sí es posible ejecutar una interrupción desde el modo usuario, lo que no tengo muy claro es por ejemplo si mediante esa interrupción puedo por ejemplo cargar una nueva GDT, o reiniciar el sistema (administración del sistema, por decirlo así). Ahora esto lo puedo detectar cuando solucione problemas que tengo al entrar al modo usuario, que extrañamente ya no me funciona (se queda colgado o sino error de protección general). Hasta pronto.
19  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 03:15 am
Gracias por eso, no me lo esperaba (en serio), lo revisaré en el transcurso del mes.

Bueno, seguía con mi pregunta actual:

Si no es posible salir del modo usuario (que por simple lógica mía es cierto) se usan las interrupciones del IVT (¿cierto?) pero no creo que se puedan ejecutar operaciones administrativas y para ello supongo que la instrucción sysenter/syscall lo soluciona pero cómo hago aquello ya que todo lo que he encontrado es sobre linux.

En cuanto a "~" no espero crear un gran SO de golpe. Ese es mi lema o algo así. Si quieres algo grande debes ir de lo más minúsculo e ir creciendo POCO A POCO hasta lograr aunque sea tus objetivos (y lo digo así porque en el camino se descubren cosas nuevas). Uno no puede hacer todo solo pero sí aunque sea el inicio.

Mi kernel está hecho en C++ (casi todo es C) y muy poco asm. Sé que el asm es más rápido porque usa registros del CPU y no variables (mayormente) pero C++ es mucho más fácil de comprender ya que tiene una mejor organización (para mi).
20  Programación / ASM / Re: Modo protegido, dolor de cabeza en: 4 Marzo 2013, 02:13 am
no no yo me refiero un PE simple a esto por ejemplo:

int main(){
   char* stringToPrint = "hola";
   _asm{
      xor eax, eax
      mov ebx,[stringToPrint]
      int 0x80
   }
   return 0;
}

es decir ninguna librería de windows.

Citar
Para salir de modo Usuario (o entrar a modo Kernel) podes usar o una interrupcion o alguna de las instrucciones de llamada rapida como sysenter/syscall.

- ¿Ejecutar una interrupción? no te entiendo, disculpa. Se puede ejecutar una interrupción en modo usuario pero la pregunta es cómo salir del modo usuario.
- sysenter/syscall háblame un poco más de eso.

Lo que quiero hacer es ejecutar un programa (monotarea) en modo usuario y luego retornar a modo kernel. ¿Se podrá?
Páginas: 1 [2] 3 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines