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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 3 4 [5]
41  Programación / ASM / Re: Assembly sin SO ¿? en: 2 Julio 2012, 23:08 pm
Desconozco si en los ordenadores convencionales las direcciones de memoria se mapean en unos sitios "predeterminados", pero hasta donde alcanzan mis conocimientos, eso es una decisión del diseño del propio computador, y no tienen porque estar en esa dirección de memoria (corriganme si me que equivoco).

La memoria de vídeo en modo texto se mapea en 0xB8000, para modo gráfico se encuentra en 0xA0000. Ambas en ordenadores convencionales.
42  Programación / ASM / Re: Assembly sin SO ¿? en: 2 Julio 2012, 22:42 pm
A pesar de que se diga lo contrario, no todo son interrupciones de la BIOS para modo real, ya que existe gran variedad de alternativas para programar aplicaciones sin necesidad de un OS, como por ejemplo los opcodes IN, OUT, LGDT, LIDT, etc.

Al no haber ningún OS instalado, la BIOS debe cargar nuestro bootloader -ubicado en el sector 0 de la unidad correspondiente- en la dirección de memoria de 16 bits 0x7C00 porque después de todo estamos en modo real, para luego cargar el núcleo del programa, pasar a modo protegido, etc.

La memoria de vídeo, al menos en modo texto, es mapeada en una dirección de memoria que ya no recuerdo, y escribiendo allí es posible imprimir caracteres en la pantalla.

La mejor alternativa para aprender a programar a tan bajo nivel sería leer la documentación oficial de Intel y tener conocimientos mínimos sobre hardware. Existe mucha documentación al respecto, sólo hay que saber buscar correctamente.

PD: En vista de que se ha hablado sobre simular un ordenador por software, te recomendaría probar BOCHS.
43  Seguridad Informática / Análisis y Diseño de Malware / Re: como encontrar y usar LoadLibrary y Getprocaddress usando PEB? en: 30 Junio 2012, 03:21 am
Accediendo al PEB no es necesaria ninguna API para usar las DLL's. con obtener la direccion base de un modulo ya reemplazas
la LoadLibrary/GetModuleHandle

Técnicamente, sólo se evita el uso de GetModuleHandle(). ¿O es que acaso podemos cargar librerías sólo leyendo la PEB? (?).

Citar
aqui no se dos cosas, cual es el tamaño de IMAGE_OPTIONAL_HEADER?

acaso son 0x78?

Lamentablemente no tengo memoria fotográfica, sin embargo, ¿no sería mejor definir las estructuras correspondientes para evitar esta clase de complicaciones?.
44  Seguridad Informática / Análisis y Diseño de Malware / Re: me pordrian explicar cual es la importancia de ebp+0x08? en: 30 Junio 2012, 03:02 am
Código:
push ebp
mov ebp, esp
;sub esp,x ; opt

;EBP = Valor anterior de EBP
;EBP+4 = Dirección de retorno
;EBP+8 = 1er parámetro
;EBP+C = 2do parámetro
;...etc

mov esp, ebp
pop ebp
retn cArgs*4

Cuando vemos algo así, es porque estamos frente a una función de alto nivel o "stack frame". Un stack frame permite manejar parámetros y/o variables locales (espacio reservado en la stack restando una cantidad determinada al registro Extended Stack Pointer o "ESP").

También existen los opcodes "ENTER" y "LEAVE" que se encargan de crear y liberar el stack frame.

Funcionamiento de un stack frame :

Código:
push 0
push 1234
call fnExample
ret

fnExample:
push ebp
mov ebp, esp

mov eax, dword ptr[ebp+0x08] ; eax = 1234
mov eax, dword ptr[ebp+0x0C] ; eax = 0

leave
retn 2*4

PD: Ahora que puedo darme el gusto de leer completamente el hilo, sería recomendable que en vez de usar funciones que encuentres por Internet, aprendas a programar correctamente en ASM ya que tus dudas son muy básicas, y el código del ejemplo que has facilitado está terriblemente desorganizado. Además que no es nada complicado recorrer el Export Directory, comparar, y encontrar la función que se requiera.
Páginas: 1 2 3 4 [5]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines