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


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Código basura de GCC?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Código basura de GCC?  (Leído 7,229 veces)
lweb20

Desconectado Desconectado

Mensajes: 43



Ver Perfil WWW
Re: Código basura de GCC?
« Respuesta #10 en: 3 Marzo 2013, 23:56 pm »

Sí eso es lo que pensaba, pero el único debugger que "conozco" (entre comillas) es bochs y la verdad que con mis pocos conocimientos de asm (me confunde muchas instrucciones) no me ayuda mucho. Lo que me ayuda más es el print, es decir voy imprimiendo "estados" como pseudocódigo en la pantalla (obviamente puede fallar cuando se trata de problemas en el administrador de memoria, pero si no hay problemas sí sirve). En el caso del esp, ebp, esi y edi estoy super perdido. La mayoría de los manuales y guías están en inglés y la verdad que yo me confundo cuando es demasiado contenido. No es que no quiera estudiar o algo por el estilo sino que es mucho más sencillo leer información en español hasta incluso testear códigos e ir poco a poco solucionando los problemas a leer un manual inmenso en inglés (que me defiendo pero como digo me confundo si es demasiado). Puedo entender una cosa y es otra o cosas así. Gracias por todo, me diste ánimos ya que me había desanimado. Bueno mientras estaba solucionando ese problema del gcc también creaba un algoritmo para ejecutar programas PE y sí que es más difícil de lo que pensaba.


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Código basura de GCC?
« Respuesta #11 en: 4 Marzo 2013, 00:28 am »

Ensamblador en teoría es fácil de aprender  porque tiene "pocas instrucciones"(muchas menos que otros lenguajes) pero vamos lo de los registros no es complicado encontrar su uso (los registros son de 16, 32 y 64 bits respectivamente):

  • AX/EAX/RAX: se usan como acumulador
  • BX/EBX/RBX: se usan como base de indexación (para los arrays)
  • CX/ECX/RCX: se usan como contador
  • DX/EDX/RDX: para datos y en general
  • SI/ESI/RSI: se usa como fuente (apuntando a una cadena) para operaciones con cadenas.
  • DI/EDI/RDI: se usa como destino para operaciones con cadenas.
  • SP/ESP/RSP: apunta a lo alto de la pila
  • BP/EBP/RBP: se usa como puntero base de la pila para mantener la dirección del marco de pila actual.
  • IP/EIP/RIP: apunta a la instrucción que se está ejecutando.

De todas maneras puedes hacer uso del manual de intel(no está en español) para encontrar el uso de cualquier registro o instrucción:
http://download.intel.com/products/processor/manual/253666.pdf
Este libro está en español y no está nada mal:
http://foro.elhacker.net/asm/lenguaje_ensamblador_para_computadoras_basadas_en_intelkip_r_irvine_espanol-t364651.0.html


« Última modificación: 4 Marzo 2013, 00:31 am por avesudra » En línea

Regístrate en
lweb20

Desconectado Desconectado

Mensajes: 43



Ver Perfil WWW
Re: Código basura de GCC?
« Respuesta #12 en: 4 Marzo 2013, 00:31 am »

Gracias por la información avesudra pero juraba que las instrucciones estaban dentro de la CPU
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Código basura de GCC?
« Respuesta #13 en: 4 Marzo 2013, 00:34 am »

Gracias por la información avesudra pero juraba que las instrucciones estaban dentro de la CPU
Bueno, es la CPU quien las interpreta. Creo que me has entendido mal porque no he dicho que estén fuera  :laugh:

Por cierto bastante interesante el post, que chulo tener tu S.O.
En línea

Regístrate en
lweb20

Desconectado Desconectado

Mensajes: 43



Ver Perfil WWW
Re: Código basura de GCC?
« Respuesta #14 en: 4 Marzo 2013, 00:36 am »

Bueno, es la CPU quien las interpreta. Creo que me has entendido mal porque no he dicho que estén fuera  :laugh:

Por cierto bastante interesante el post, que chulo tener tu S.O.

Citar
Ensamblador en teoría es fácil de aprender  porque tiene "pocas instrucciones"(muchas menos que otros lenguajes)

 :laugh:


Está bueno el manual, muy bueno  ;-)
« Última modificación: 4 Marzo 2013, 00:50 am por lweb20 » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Código basura de GCC?
« Respuesta #15 en: 4 Marzo 2013, 00:47 am »

:laugh:
+1

@Avesudra, aprender bien el tutorial basico de ensamblador que estas leyendo
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Código basura de GCC?
« Respuesta #16 en: 4 Marzo 2013, 00:54 am »

+1

@Avesudra, aprender bien el tutorial basico de ensamblador que estas leyendo
No lo estoy leyendo, quizás no debería haber dicho nada, por eso he puesto lo de "en teoría". Me refería a que las instrucciones de ensamblador son más fáciles de aprender o recordar que todos los nombres de las funciones de la librería math o string de C. Se me ha tomado como un idiota pero vamos prefiero que me lo digan claro a que lo hagan con una sonrisa. Disculpad mi ignorancia.

¡Un saludo!
En línea

Regístrate en
lweb20

Desconectado Desconectado

Mensajes: 43



Ver Perfil WWW
Re: Código basura de GCC?
« Respuesta #17 en: 4 Marzo 2013, 00:56 am »

Sí xD pensé que me estaba equivocando y me pareció gracioso cuando comentaste eso.

Bueno, alguien sabe si no es mucha molestia un manual de modo protegido en español. Me serviría bastante. No importa si es asm (que sea sintaxis intel por favor) o si es C/C++. Gracias.

Sobre todo ejecutar de alguna forma interrupciones de la BIOS mediante out o algo así :P


Para Eternal Idol 7D:

Logré hacer algo interesante con el código que me pasaste:

Antes que nada el pusha y popa son necesarios ya que me mueve la pila creo el programa (esp creo).

_asm pusha
int r = ((int(*)(void))programa)();
_asm popa

pantalla.Escribir("\nEl resultado de la aplicación fue: %i", r);
« Última modificación: 4 Marzo 2013, 01:09 am por lweb20 » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Código basura de GCC?
« Respuesta #18 en: 4 Marzo 2013, 01:13 am »

pusha y popa ponen y sacan todos los registros generales de la pila (por eso decia antes que los preservabas, antes y despues de la llamada tendran el mismo valor de esa manera).

http://css.csail.mit.edu/6.858/2010/readings/i386/PUSHA.htm
http://css.csail.mit.edu/6.858/2012/readings/i386/POPA.htm

¿Que pasa si usas push EBX y POP EBX? ¿Funciona? Si es asi es por lo que te explique antes. Por cierto cuando haces un call tambien se mueve la pila, para poner la direccion de retorno.

PD. Si queres informacion sobre otros temas te recomiendo Google y sino el sub/foro que corresponda asi no desviamos este hilo que esta practicamente resuelto.
« Última modificación: 4 Marzo 2013, 01:15 am por Eternal Idol 7D » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
lweb20

Desconectado Desconectado

Mensajes: 43



Ver Perfil WWW
Re: Código basura de GCC?
« Respuesta #19 en: 4 Marzo 2013, 01:15 am »

ah ok perdon no sabía gracias. Hasta otro hilo :) DECLARO FIN DEL TEMA
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Vuelve a reaparecer el código basura en la IAT
Ingeniería Inversa
.:UND3R:. 4 3,099 Último mensaje 25 Junio 2011, 02:48 am
por apuromafo CLS
Añadir código basura para Av
Ingeniería Inversa
Distorsion 8 4,729 Último mensaje 2 Enero 2012, 22:04 pm
por _Enko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines