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 - Avoidance25

#1
Cita de: MCKSys Argentina en 11 Noviembre 2009, 01:27 AM
El tema no es la pregunta, sinó el tipo de pregunta.

¿ Porqué no quieres usar EAX ?  :huh:

Eso no tiene lógica... Por eso las respuestas. ;D

Saludos!
No quiero usar eax porque necesito manejar 3 punteros de memoria. Sobre todo hice esta pregunta porque pensaba que se podia acceder a la memoria directamente, de hecho, creo que utilizaba variables de esta manera antes (hace mucho tiempo usaba ASM de 16 bits, y no volvi a tocar ASM hasta hace unos pocos dias).

Y se que puedo ir rotando, pero si hago el programa (o esta parte del programa al menos) en ASM es porque necesito que sea rapido, y si hay una forma de acceder directamente a estas direcciones de memoria me viene perfecto.



En fin, si no se puede hacer de esta manera voy a usar eax, ebx y edx.
#2
Cita de: YST en 10 Noviembre 2009, 18:24 PM
Existen mas registros que eax , puedes mover una a ebx otra a edi y otra a esi :P
Ahhh, muchas gracias, voy a hacerlo de esa manera. Solo es que pensaba que se podia acceder directamente.....

Cita de: R.N.A. en 10 Noviembre 2009, 19:29 PM
Antes que todo... estas seguro que sabes programar en ASM, te recomiendo que leas sobre los registros y sobre el Stack
Pues obviamente estoy aprendiendo, si lo supiera todo no estaria preguntando.

Cita de: MCKSys Argentina en 10 Noviembre 2009, 21:46 PM
Puedes intentarlo con ECX ó EDX ó el que mas te guste (trata de no tocar EIP  ;D)
Ya entendi este punto con el mensaje de YST, grax.

Cita de: MCKSys Argentina en 10 Noviembre 2009, 21:46 PM
Ahora, cuando salgas con algo como: "no quiero usar el stack", ahi si... cambia de lenguaje  :xD
¿Que tiene de malo ASM?. De todas formas no pienso hacer todo el programa en ASM, solo la parte que de otra forma tardaria mucho tiempo en ejecutarse.




Pero la gran p***, se que la pregunta es de un principiante, pues en ASM eso soy, pero no es necesario que respondan de manera negativa. Todos fueron principiantes alguna vez, no?
#3
Lo que quiero hacer es una funcion que me trabaje sobre 3 cadenas de texto, y que se le den las direcciones de memoria en las que comienzan las cadenas como argumentos.

Algo asi:
Código (asm) [Seleccionar]
;void MiFuncion(char *string1, char *string2, char *string3);
proc MiFuncion  string1, string2, string3

        ret
endp


Ahora, lo que NO quiero es tener que guardar estas direcciones de memoria en eax para acceder a la memoria, ya que tendria que estar rotando las 3 cadenas por eax.
¿Hay alguna forma de acceder a la direccion de memoria a la que apunta el contenido de una variable?. Tenia entendido que esto se puede lograr si no se usan los [], pero probe de muchisimas maneras y no me funciono :(
#4
Ok, muchas gracias.
#5
Muchas gracias por tu respuesta.

Entonces, ¿lib es un comando de VC++?. ¿No conoces alguna forma de linkear el archivo objeto con MinGW ?.
#6
Tengo un codigo de una dll, que es una modificacion mia de un ejemplo que traia el compilador, y quisiera compilar este codigo de tal manera a que se compile como una libreria estatica (".a" o ". lib"). ¿Como lo hago?

Este es mi codigo:
format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'
cadena db 'asd',0

;section '.text' code readable executable

proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
        mov     eax,TRUE
        ret
endp


proc MiFuncion
        invoke  MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK
        ret
endp

section '.idata' import data readable writeable

  library user,'USER32.DLL'

  import user,\
         MessageBox,'MessageBoxA'

section '.edata' export data readable

  export 'midll.dll',\
         MiFuncion,'MiFuncion'

section '.reloc' fixups data discardable
#7
Ahhhh, pues muchas gracias de nuevo.
#8
Muchas gracias por las respuestas, ambas me sirvieron muchisimo. De todas formas voy a ver de leer un poco antes de hacer el programa, ya que me doy cuenta de que hay mucha diferencia entre 16 y 32 bits.

Ahhh, me estaba preguntando: ¿Es un invoke mas lento que un call(con todos los push) cuando se quieren usar funciones?
#9
Hice un encriptador de archivos en c, y queria hacerlo ahora en ASM para que sea mas rapido. El problema es que no se como escribir en archivos de otra manera que usando el int 21h, y me parece que usando asm de 32 bits se deberia hacer ya de otra forma.
Cual es la mejor manera de escribir en archivos ?, con la int 21h ?, o hay alguna API de windows que me ayude ?
#10
Este es un compilador batch hecho en c (por mi).



Link: http://www.megaupload.com/?d=6C80TRUV


Hasta ahora no lo detecta ningun antivirus (con muchos compiladores se tiene ese problema) y tiene la opcion de compilarlo en modo oculto.