[Ayuda!]Problema con procedimientos Irvine

Iniciado por .:UND3R:., 29 Noviembre 2011, 20:40 PM

0 Miembros y 1 Visitante están viendo este tema.

_Enko

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.

.:UND3R:.

Cita de: _Enko en  1 Diciembre 2011, 02:24 AM
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.

Que extraño, se supone que está orientado a MASM incluso hablan de que los ejemplos son realizados bajo MASM. Te comento tengo: la desventaja que no sé como hacerlo a través de las API'S de Windows pero algo me ayuda el arte de Ingeniería inversa traceando noté en donde se genera el error:


00401F1E  |.  6A 00         PUSH 0                                        ; /pReserved = NULL
00401F20  |.  68 98484000   PUSH serial.00404898                          ; |pWritten = serial.00404898
00401F25  |.  50            PUSH EAX                                      ; |CharsToWrite
00401F26  |.  52            PUSH EDX                                      ; |Buffer
00401F27  |.  FF35 94484000 PUSH DWORD PTR DS:[404894]                    ; |hConsole = NULL
00401F2D  |.  E8 34010000   CALL <JMP.&kernel32.WriteConsoleA>            ; \WriteConsoleA


A mi criterio debería ser pusheado el handle de la consola, es por eso que no puede escribir ya que la call WriteString utiliza la API de windows WriteConsoleA, pero desconozco como se realizaría todo en código de fuente ASM ya que eso estoy estudiando (y de eso trama el libro), se podría sacar algo de provecho con lo comentado?

Saludos y muchas gracias _Enko por tomarte tu tiempo, muchísimas gracias, a ver si te hago la competencia en los crackmes en algunos años luz, Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko

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.

.:UND3R:.

Cita de: _Enko en  1 Diciembre 2011, 06:26 AM
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.

Para mi es entretenido nunca había depurado algo que era mio, siempre depuré lo ajeno

Puede ser útil lo siguiente?

http://kipirvine.com/asm/5th/gettingStarted/index.htm#batch

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko

#14
acabo de probar el codigo del primer post y funciona ok si:

en QEDIT de masm32, pones:
Project>>Console BuildAll

y ahi ya funciona bien.

casualmetne era el mismo error que estaba teniendo al querer usar la msvcrt con masm.

.:UND3R:.

Cita de: _Enko en  1 Diciembre 2011, 19:08 PM
acabo de probar el codigo del primer post y funciona ok si:

en QEDIT de masm32, pones:
Project>>Console BuildAll

y ahi ya funciona bien.

casualmetne era el mismo error que estaba teniendo al querer usar la msvcrt con masm.

Nada más que decir, excelente gracias a ti podré seguir el libro al pie de la letra sin ningún problema, de verdad muchísimas gracias, ya veía que mientras me lo leía no iba a poder ejercitarme con los ejercicios que me iban a salir, Muchísimas gracias _Enko :D

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

x64core

yo por eso cuando llege a esa parte lo hare con otra libreria :P
ya solo me faltan 20 pag para el capitulo 5 :D