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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 66
201  Programación / ASM / Re: Como imprimir los valores de un vector de enteros? en: 4 Enero 2014, 15:22 pm
Hola, ten cuidado al usar ECX que  la funcion printf por ahi no preserva ecx. Recuerda que los contadores seguros  son esi, edi y ebx.

Te doy una pista si quieres imprimir numeros menores a 10.
8 no es lo mismo que "8"
El primero es un entero. El segundo es un caracter ascii.
El valor del caracter ascii "8" es  56. De "0" 48, "1" es 49...

http://www.asciitable.com/


Luego otro problema.
Vect1 DW....
mov ecx, addr vect1
printf..... [ecx]

printf como parametro te pide un Double Word.
DW creo que significa Data Word.
Necesitas un DD, Data Double Word.
De lo contrario en vez te tomar 8.... te va tomar 98 (primer y segundo elemento del vector invirtiendolos)

Saludos


202  Programación / ASM / Re: Duda con bootsect.s - Linux en: 20 Diciembre 2013, 16:46 pm
mh... creo que te estas confundiendo de lo que verdaderamente hace un org.

Te  conviene leer un poco mas de teoria, porque yo ya no la tengo presente en mi memoria xD

2)
Para llegar a los 510 bytes tendrias que hacer algo tipo:
Código:
db  510 - $;  dup 0
dw  0xAA55
mh... son 510 mas 2 bytes de la firma de un bootloader.

3)El inicio podria ser algo como:
Código:
use16
  org   0
  jmp  0x07C0:start
start:
  mov  ax, cs
  mov  ds, ax
  mov  es, ax


Citar
estoy en masm32
NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

eso no te sirve, ensambla para windows unicamente.

Necesitas un ensamblador que ensamble codigo de 16bit.
No se si masm16 serviria....

fasm, nasm segurisimo.


203  Foros Generales / Noticias / Re: Muere un trabajador menor de edad en una de las plantas donde se fabrica el ... en: 13 Diciembre 2013, 20:55 pm
Citar
Repito, yo no me tengo que preocupar por como se trata a los trabajadores de una empresa a la que compro productos... yo me tengo que preocupar por mi propia empresa. Para preocuparse de lo otro, hay organismos gubernamentales y autoridades que deberían cumplir su deber..
Mh... es una linea muy fina alli.

Suponte que eres arquitecto y te dedicas a construir manciones. Un cliente te encarga unas 10 de esas. Tiene dinero para pagarlas, es mas te las paga todo por adelantado... pero tu sabes que el dinero viene de dorgas y prostitución del tipo ultra dudosa donde "trata de personas" parece ser casi sinonimo.

En teoría, a ti te dan el dinero y te hacen el encargo. Se supone que de donde viene el dinero, para ti como profesional no te tiene que importar. ¿Pero y como ser humano?

Las cosas no son blancas o negras.
204  Programación / ASM / Re: Duda con bootsect.s - Linux en: 12 Diciembre 2013, 22:20 pm
Citar
Decía algo así.. Sos un capo Enko, muchas gracias! Yo estoy usando VirtualBox, pero cuando cree la maquina virtual, no le dije que SO era, lo deje como desconocido, capaz me complica la vida, sera cuestión de probar..
Na, eso ló único que hace es fijar la cantidad  de ram que va usar la máquina virtual. Siempre luego lo puedes cambiar a mano.

VirtualBox es quisquilloso con las imagenes de disquet. Creo que te obliga a que tengan un formato fat valido.

Una opcion que no he utilizado sería tomar una imagen de un disquet valido y simplemente usando un editor hexadecimal reemplazar a mano el inicio con el binario de tu codigo.
Bah, en realidad hay herramientas para eso pero ni idea cuales son.


Citar
Fa, se cerro la sesión y perdí todo lo escroto
Alerta, Alerta!!!!
Se han descubierto seciones de elhacker que castran!!!!
Se recomienda a toda la población masculina de hackers mantener "todo lo escroto" lejos de este tipo de sesiones.
205  Programación / ASM / Re: Duda con bootsect.s - Linux en: 12 Diciembre 2013, 21:33 pm
Citar
Creo que capte lo que decís.. te cuento la idea, tengo planeado entender el código de Linux, y armar un pseudo sistema operativo.. claro esta, me falta mucho.. pero creo que estoy en camino..
Te recomendaría leer el manual de intel de arquitectura de sistema.
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

Y luego algun libro teorico sobre desarollo de sistemas operativos (mas que nada para tener el panorama teorico completo)
Luego para asuntos practicos está la wiki OSDEV.

Citar
Como es posible que un SO, el cual contiene instrucciones en ASM funcione sobre diferentes arquitecturas?
1)Un SO no contiene instrucciones asm, sino instrucciones de lenguaje máquina. Las instrucciones asm son acrónimos a instrucciones de lenguaje máquina para simplificar la cosa. Pero no es lo mismo.

Suponte este ejemplo.
Código:
add eax, ebx
Al ensamblar esto para x86 va generar  0x03c3.
Que para un procesador x86 significa sumar a eax el contenido de ebx.

Pero si ejecutas eso por ejemplo en un celular con arm7 puede pasar dos cosas.
1)que tire un error.
2)que haga algo totalmente diferente.

Si quieres ejecutar el mismo codigo en un procesador arm7 tendras que ensamblar este codigo
Código:
ADD r1,r2
Que va generar una instruccion de 2 o mas bytes (no tengo desensamblador de arm a mano ni ensamblador)
Pero 99.9% seguro que lo que genere el ensamblador de arm no va a ser 0x03c3.


De ahí si tienes siguiendo el ejemplo usando lenguaje C
Código:
varA += varB;
Si compilas ese codigo para x86 va generar algo muy parecido a "add eax, ebx" o tal vez algo diferente pero con el mismo sentido. Depende del contexto, de la optimizacion del compilador. Si el compilador es bueno y tiene buena optimizacion, y esa linea de codigo es codigo basura totalmente irrelevante para lo que se esté haciendo, tal vez ni genere nada.

La ventaja es que puedes tomar ese mismo codigo en C, usar un compilador de C para ARM y te va generar la instruccion correspondiente para un procesador ARM.

Esa es la diferencia, si escribes en asm para x86, terminas teniendo siempre binarios para x86.
Pero si usas C por ejemplo, depende para que estes compilando es el binario que termines obteniendo.


Citar
Se que dije que era una duda, pero.. pregunto,, si hago mi propio boot, y le hago mandar un mensaje en la pantalla, (con interrupciones de la BIOS claro esta..) debería verse no? Solo hago que muestre ese mensaje aclaro, sin mas..
Totalmente. Te alcanzaría con un:
"org 0x7c00"
"llamar a la interrupcion que necesites".
y listo.
El tema es meter ese codigo en el bootsector del disco.
Yo en mi práctica me resulto cómodo wmware, hacer que mi código ocupe 1.44mb y cargarlo como disquet.
206  Programación / ASM / Re: Duda con bootsect.s - Linux en: 12 Diciembre 2013, 19:57 pm
1)Hay un par de herramientas que te dejan escribir directamente sobre el disco. Si lo haces sobre tu disco rigido, la pc va dejar de arrancar seguramente.
Si usas una máquina virtual, simplemente haces que tu binario ocupe 1.44mb, en los primeros 512b pones el codigo que necesites. Luego colocas esa imagen como si fuera un disquet virtual y pones para que la maquina virtual arranque desde disquet.

2)Si, pero el codigo fuente puede estar hecho en distintos compiladores/ensambladores.
207  Programación / ASM / Re: Duda con bootsect.s - Linux en: 12 Diciembre 2013, 19:34 pm
La extención no tiene nada que ver.

La bios lo que hace es cargar a esa direccion de memoria (0x7C00) los primeros 512b del disco elegído como aranque. Por eso,

1)A la bios no le interesa que tipo de archivo es... mejor dicho, ni siquiera es un archivo. Son los primeros 512b del disco.
2)Vos lo elegis en el setup de la bios, CD, HD, USB, etc...
3)Estas confundiendo codigo fuente con binario.  La extención no importa. Lo importante que en los primeros 512b se carguen a memoria el resto del bootloader y se salte allí.

Saludos.
208  Programación / ASM / Re: Duda sobre maquina virtual en: 11 Diciembre 2013, 17:26 pm
Gracias por responder _Enko, buena tu explicación.. mi duda era de interpretación del libro, porque como que mezcla un poco ahí, y me dio a entender que windows usaba una maquina virtual para ejecutar los programas (cosa que me parecía totalmente extraña, teniendo el loader) ya quedo claro jeje

Saludos! Y Gracias!
Mh... tal vez se refiere que el windows utiliza un emulador para aplicaciones de 16bit. (lo más probable que sea eso)

De nada :)
209  Programación / ASM / Re: Duda sobre maquina virtual en: 11 Diciembre 2013, 16:58 pm
Lo que es Virtual PC, Wmware etc... serían más bien EMULADORES de la arquitectura x86/64.

Es decir, lo que hacen es emular una arquitectura. Similar a lo que hace un emulador de la sega genesis o nes, snes etc..
Una ventaja es que la arquitectura x86/64 trae un set  de instrucciones que permite hacer eso con mayor optimidad.
Por ejemplo, en el caso de una NES, el emulador lo que haria es reconocer las instrucciones del chip motorola 6502 y ejecutar la instruccion similar en x86.
En el caso de un emulador/maquina virtual x86, lo que haria es algo similar. Uno pensaria que al ser la misma arquitectura simplemente tomaria cada instruccion y la ejecutaria, pero no es asi.
Si la instruccion es por ejemplo "mov eax, 4" ningun problema, haría exactamente eso.
Pero si la instruccion es por ejemplo "jmp 0x07600" no va hacer eso. Llegas a ejecutar eso en windows y va tirar un lindo error diciendo que no es una instruccion admitida.  Es una instruccion válida de x86, pero no es válida a nivel usuario (ring3) en donde se ejecutan las aplicaciones de windows. (Instruccion de privilegio ring0/kernel). De ahí que el emulador/maquina virtual se encarga de emular esa instruccion.

Por eso mas que "maquina virtual" sería mas bien un emulador de x86. Me imagino que el término "máquina virtual" se refiere mas bien a que crea una "pc/maquina" dentro de tu pc. De ahí "máquina virtual"

 
En cambio, la máquina virtual de java, lo que hace es tomar instrucciones del binario de java (seria una especie de pseudo lenguaje maquina  universal) y ejecutar la instruccion corresponiente en la PC o en cualquier máquina host. (celular, ruter, heladera, etc..)
Es decir, lo que hace Java es complilar en una arquitectura inexistente fisicamente (ningun microchip soporta instrucciones del "binario" java) y luego emularlas en el resto de las arquitecturas utilizando la JVM. El tema es como no existe ningun microchip que ejecute java directamente, tampoco sería correcto decir que está emulando java por mas que el proceso sea parecido.

Finalmente pearl/phyton son interpretes. Es decir, a partir del código no se crea ningun "binario". Las lineas de codigo se transforman a instrucciones en run-time. No hay un binario de por medio. La ventaja es que se pueden hacer unas lineas de codigo exoticas, pero la desventaja la lentitud en el proceso.


Saludos.
210  Programación / ASM / Re: Tutorial mini-IDE para FASM con gedit (linux) en: 9 Mayo 2013, 15:56 pm
Gracias por el dato ^^
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 66
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines