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

#421
ASM / masm, msvcrt.
1 Diciembre 2011, 16:53 PM
Hola, pense que era mi compu que tenia algun conflicto con visual studio o algo, pero no. Instalacion nueva del paquete de http://www.masm32.com/

Código (asm) [Seleccionar]

.386
.model flat, stdcall
option casemap :none   ; case sensitive
      include C:\masm32\include\windows.inc
      include C:\masm32\include\kernel32.inc
      include C:\masm32\include\user32.inc
      include C:\masm32\include\msvcrt.inc
      includelib C:\masm32\lib\kernel32.lib
      includelib C:\masm32\lib\msvcrt.lib
      includelib C:\masm32\lib\user32.lib
     
.code
    szPause db 'pause',0
    szFmt db '%s',0
    charsWritten dd 0
start:
    invoke AllocConsole
    invoke GetStdHandle, STD_OUTPUT_HANDLE
    invoke WriteConsole, eax, offset szPause, 5, offset charsWritten,NULL
    invoke crt_printf,offset szFmt, offset szPause
    invoke crt_system, offset szPause
    invoke ExitProcess, 0
    ret
end start

El resultado deberia de ser "pausepausePresione una tecla para continuar..."
Sin embargo, crt_printf no imprime la cadena, si devuelve 5 que son los caracteres que escribio. Es decir esta "imprimiendo el texto" pero no se imprime en la pantalla.

1)
Alguna idea de porque no imprime con printf?
Con o sin AllocConsole el resultado es el mismo. aunque printf se tendria que encargar solo de alojar una consola si  no esta  creada.


Saludos.
#422
Es lo que te habia comentado, no le pasa un handle valido a consola.
Lo que me extraña a mi, es que importando la libreria a visual studio si funciona.
Trata reinstalando masm, y mejor aun, reinstala exactamente la misma version que viene con el libro.

pd: no es "arte ingenieria inversa" sino que se llama "depurar mi propio programa"


Saludos.
#423
Hola, en el enlace que pasaste:
http://kipirvine.com/asm/examples/index.htm

los include de la libreria irvine no se si realmente son compatibles con masm.

Con visual cpp fue tan facil como:
Código (cpp) [Seleccionar]


unsigned int __stdcall WriteString();
int main()
{
char *hello = "hola mundo";
__asm{
mov edx, hello
}
WriteString();
system("pause");
return 0;
}

solamente hubo que agregar en la opcion del linker irvine32.lib para que pueda resolver el simbolo WriteString. Y funciona bien.

primero, que en masm no he podido hacer el include de irvine32.inc, se supone que es para masm, pero a mi me ha creado conflicto SmallWin.inc que resolvi haciendo el prototipo manualmente.

Código (asm) [Seleccionar]

.386
.model flat, stdcall
option casemap :none


include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\msvcrt.inc

WriteString PROTO


includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\msvcrt.lib
includelib Irvine32.lib
.data
szMsg db "Hola a todos",0
.code

start:
     mov edx, offset szMsg
     call WriteString
     invoke ExitProcess, 0
end start

Igual no funciona,  por alguna extraña razon no tiene un handle valido a la consola.

No uso masm, no se si tendra alguna vuelta mas, pero en si, tal cual esta deberia funcionar.
#424
Ingeniería Inversa / Re: [Reto] Diofanto's Crackme
30 Noviembre 2011, 23:23 PM
No me llevo muy bien con la fpu.
Intente un par de veces resolver las raices de la bicuadratica pero no ha resultado...

No estaba seguro si eran mis pesimos conocimientos de matematica (no tenia ni idea de como se resolvia una cuadratica), o mis otras pesimas habiliades con la fpu.

voy a ver si en estos dias intento arreglar el tema con las raices y la fpu, o bien terminaria reescribiendo todo en C o algo parecido.

#425
Diseño Gráfico / Re: Reducir peso del GIF
30 Noviembre 2011, 18:57 PM
con fireworks cuando guardas pone "options" y elige la cantidad de colores y modifica la paleta para que se adapte.
#426
A mi me hubiera gustado en el colegio aprender a programar con:


#427
ASM / Re: Problema con procedimientos Irvine
29 Noviembre 2011, 23:06 PM
archivos lib los usa el linker para enlazar tu ejecutable con las funciones. Son librerias estaticas.

los inc, son los prototipos de las funciones que tiene esa libreria para que el ensamblador sepa que es lo que estas usando y derive el trabajo al linker.

MsgBox  seria una META funcion, funcion de segundo grado... llamala como quieras.

La funcion original es MessageBoxA/W de user32, lo que hace MsgBox es llamar a la funcion de la winapi original. (de seguro que lugo hay uno que otro nivel mas, pero dejemoslo ahi)



Saludos.







#428
ASM / Re: Problema con procedimientos Irvine
29 Noviembre 2011, 22:22 PM
por lo que veo, usa "irvinecall"  o como se le ha cantado.
Pasas el unico parametro que lleva en EDX que es lo que estas haciendo, y por lo que pude ver deberia funcionar.

no  te recomiendo enroscarte mucho con esa libreria... es un asco, la convencion de llamada es ridicula....
No se como  pretende enseñar usar luego la winapi (98% stdcall) con su libreria riducula 50% "irvinecall".


.data
caption db "Dialog Title", 0
HelloMsg BYTE "This is a pop-up message box.", 0dh,0ah
   BYTE "Click OK to continue...", 0
.code
main PROC
mov ebx,OFFSET caption ; caption
mov edx,OFFSET HelloMsg ; contents
call MsgBox
exit
main ENDP
END main

Y su codigo de ejemplo tambien le falla, "caption" con minuscula, pero "HelloMsg" con mayuscula... onda, elige un estilo y respetalo.
#429
ASM / Re: Problema con procedimientos Irvine
29 Noviembre 2011, 21:20 PM
La libreria irvine es stdcall o fastcall?

mucho no te puedo ayudar, no lei el libro...

Si sigues el libro  a pie de letra, es cuestion de hacer buen copy past.
La unica alternativa que se me ocurre es no seguir el libro a pie de letras. Tomalo como una prueba anti copy past.

#430
ASM / Re: [Solucionado]Problemas al enlazar (Irvine)
29 Noviembre 2011, 20:43 PM
Cual es la ventaja de agregar a este tal "Kip Irvine" a tus programas?


digo, porque muy lindo no es :silbar: ;-)