Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - .:UND3R:.

#1301
ASM / Re: Pasar a código ensamblador [Ayuda]
6 Diciembre 2011, 05:12 AM
Cita de: Leo Gutiérrez. en  6 Diciembre 2011, 04:46 AM
Bueno, les cuento. Estoy haciendo un compilador para un lenguaje de programación que inventé (En realidad es una ****, pero bueno, algo es algo, es como parte de un trabajo final de una materia que estoy llevando en la universidad, tengo que entregarlo dentro de una semana), ya hice mi analizador léxico, el analizador sintáctico, el semántico y demás, ahora estoy en la parte de generación de código. Hice un algoritmo que genera código ensamblador basándose en mi árbol sintáctico. El problema es que genera un código ensamblador que no es "ensamblador" :p, lo simula, ya que NO sé ensamblador. Entonces, necesito ayuda para pasar de algo como esto:

inicio X
entero a = 1 + 2 * 3 - 5
fin;


A esto:

mov R0,#1 ; Movimiento
mov R1,#2 ; Movimiento
mov R2,#3 ; Movimiento
mul R1,R2     ;  Multiplicamos
add R0,R1     ; Sumamos
mov R1,#5 ; Movimiento
sub R0,R1        ; Restamos
mov a,R0    ; fin de la sentencia

SENTENCIA PARA MOSTRAR a


Que es lo que genero con el algoritmo que hice (sé que no es muy eficiente), ¿cómo quedaría en assembly real y qué más necesito para poder generar el ejecutable?

Disculpen mi ignorancia en este rubro pero es que estoy totalmente perdido en esto, necesito un poco de ayuda.

Saludos.

No entiendo muy bien que es lo que quieres hacer deseas saber como quedaría
inicio X
entero a = 1 + 2 * 3 - 5
fin;


en ASM?

Si es así a los valores debes asignarle registros de propósito general por recomendación de 32 bits en código ASM

Código (asm) [Seleccionar]
TITLE prueba (prueba.asm)
INCLUDE c:\masm32\include\Irvine32.inc
INCLUDELIB c:\masm32\lib\kernel32.lib
INCLUDELIB c:\masm32\lib\Irvine32.lib
INCLUDELIB c:\masm32\lib\User32.lib
.data
RESULTADO DWORD ?        ; Variable sin inicializar tipo DWORD (4 bits)
.code
main PROC
mov ecx,3                         ; ECX = 3
mov eax,2                         ; EAX = 2
mov ebx,5                         ; EBX = 5
mul ecx                             ; multiplica el valor de EAX con ECX y lo guarda en EAX
not ebx                              ; invierte el valor de EBX (complemento a dos), invierte los bits y le suma 1 bit
add eax,ebx                       ; suma EAX = 3*2 con EBX = -5 y lo almacena en eax
inc eax                               ; aumenta en 1 el contenido de EAX
mov RESULTADO,eax          ; mueve a la variable RESULTADO el valor de EAX
exit
main ENDPROC
END main


utilicé librerías que facilitan la programación en ASM como es el caso de utilizar exit ya que sin estas librerías se debería utilizar la API ExitProcess junto con la directiva INVOKE

en cuanto para poder generar el ejecutable necesitas realizar dos cosas:

1)ensamblar
2)linkear

ensamblar consiste en transformar el código de fuente en lenguaje máquina pero sin incluir las librerías esto generaría un archivo llamado código objeto (.obj)

linkear consiste en juntar las librerías que haz utilizado junto con el programa, este generaría el .exe

para aquello puedes optimizarlo con IDE como MASM32 que incluye la opción build all así generaría el .exe inmediatamente

también esto puedes hacer desde batch una vez instalado el MASM32:

Código (bash) [Seleccionar]
echo off
:inicio
cls
set path=%PATH%;c:\masm32\bin
echo Introduzca el nombre del archivo (ej prueba.asm):
set /P file=
cls
ml /Cp /coff %file% /link /subsystem:console
pause
goto inicio

(*este es tu fuerte  :P)

con eso te ahorrarías tener que entrar al IDE de MASM32

Saludos

EI: juntando mensajes.

En cuanto a las bibliotecas estas no vienen por defecto en MASM32 deberías bajarla de la siguiente página:
http://kipirvine.com/asm/examples/IrvineExamplesVS2005.exe

Un autoextraible que contiene el .INC y las .LIB incluidas en el ejemplo

(solo por que me haz ayudado en batch jeje)
#1302
jajajaja aquí no se hacen tareas
#1303
Excelente tutorial muy bien explicado, muchas gracias por la dedicación  ;-)

vc erro em o OEP vc escribeo "Ese el OEP" mais certo e asim: Ese es el OEP", mais todo o demais muito bom cara obrigado por seu tutorial gosto muito  ;-)
#1304
Lo más probable es que haya leído este comentario. podría ayudarte con asistencia remota. envíame un MP para ver como nos contactamos. Saludos
#1305
Dudas Generales / Re: Consulta! Help!
3 Diciembre 2011, 22:52 PM
Lo más probable y lógico es que sí, como consejo podrías jugar de manera legal y honesta
#1306
Cita de: A2Corp en  3 Diciembre 2011, 08:16 AM
Buenas, este tema no genera ningun aporte es mas que todo una gran duda que tengo en este momento.
Una gran curiosidad es conocer lo que existe en metodos de infección.

Actualmente si un usuario en Firefox o en Chrome entra a un website con algun codigo malicioso, que es lo mas avanzado que se puede lograr con tan solo cargar el sitio?


Descargas no autorizadas y posterior ejecución
acceso a datos dentro del computador
robo de datos entre otras cosas.
en sí un sin fin de opciones obviamente dependiendo del fallo de seguridad que se posea.

Saludos
#1307
ASM / Re: problema con call propio ej: call hola
3 Diciembre 2011, 22:24 PM
Cita de: Eternal Idol en  3 Diciembre 2011, 20:32 PM
El END main ponelo al final de todo (despues del procedimiento hola).

Efectivamente, ese era el problema muchas gracias
#1308
Cita de: Ed Hunter en  3 Diciembre 2011, 19:34 PM
Muchas gracias por las respuestas. Me pondré a mirar post e info por el foro y si tengo alguna duda, lo preguntaré =D
Por cierto, si tenéis alguna sugerencia no dudéis en exponerla.

Un saludo!!

En cuanto a mi Ingeniería inversa, es un tema extremadamente extenso podría ser útil mostrar como hacer un software seguro, hablamos de packer, detectores de posibles debugger, como el programa debe actuar en caso de que sepa que esté siendo debugeado en fin una gran cantidad de cosas, luego me apunto por Inyección SQL y si es posible (si se da la vulnerabilidad) poner como ejemplo la web de tu UNIVERSIDAD, sería algo que llamaría la atención.

Saludos y suerte
#1309
Cita de: Eternal Idol en  3 Diciembre 2011, 19:23 PM
Sera algun problema en el "IDE" entonces  :silbar:

Puede ser, en fin muchísimas gracias :D

(ahora si)
#1310
ASM / problema con call propio ej: call hola
3 Diciembre 2011, 19:25 PM
hola estoy haciendo un mini programa con dos procedimientos uno es el principal que llama a otro a través de call hola, pero cuando intento ensamblarlo me aparece lo siguiente:

SumaEnteros.asm(17) : error A2006: undefined symbol : hola

la estructura del código es más o menos así:
Código (asm) [Seleccionar]
main PROC
        .
        .
        call hola
        .
        .
        INVOKE ExitProcess,NULL
main ENDP
END main

hola PROC
       .
       .
       ret
hola ENDP


No sé si se entiende el problema, intenté declarar el prototipo del procedimiento con la siguiente instrucción:
Código (asm) [Seleccionar]
hola PROTO

Pero no me funcionó jeje
Espero su ayuda