elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 43
201  Programación / Programación C/C++ / Re: ¿Como es posible retornar estructuras con la convencion de llamadas cdecl? en: 7 Marzo 2021, 12:54 pm
Supuse que se trataba de algo asi. No entiendo el codigo que usa el set de instrucciones MMX, pero entiendo lo que esta haciendo.

Aunque sinceramente pense que hacia uso de un ciclo para guardar los datos byte a byte.

Citar
Ahora podes probar sacando data2 de la estructura, data1 sera devuelto en EAX y data3 en EDX.

Me parece impresionante lo exhaustiva que llega a ser la tecnologia.

Saludos y gracias por tu respuesta.
202  Programación / Programación C/C++ / ¿Como es posible retornar estructuras con la convencion de llamadas cdecl? en: 6 Marzo 2021, 22:46 pm
Tengo una pequeña duda...

En C es posible hacer esto:

Código
  1. /*...*/
  2. struct _hdr
  3. char data1;
  4. double data2;
  5. char *data3;
  6. };
  7.  
  8. /*...*/
  9.  
  10. struct _hdr foo (void)
  11. {
  12.    struct _hdr instance;
  13.    /*...*/
  14.    return instance;
  15. }
  16. /*...*/

¿Como es posible hacerlo segun la convencion de llamadas de C?

Citar
Integer values and memory addresses are returned in the EAX register
https://en.wikipedia.org/wiki/X86_calling_conventions

Entiendo que una estructura no es un valor entero (a menos que sea una direccion de memoria). Entonces, ¿Como haciendo uso de cdecl se puede retornar una estructura entera? La citada en el codigo no cabe siquiera en EDX:EAX.

Saludos y gracias por su atencion.
203  Foros Generales / Foro Libre / Re: Microsoft se dispone a anunciar 'El Nuevo Windows', y estaría a tan solo unas semanas en: 1 Marzo 2021, 21:17 pm
No puedo esperar.
204  Programación / ASM / Re: Problema con CommandLineToArgvW en: 28 Febrero 2021, 22:21 pm
Estas llamando a CommandLineToArgvW por lo que te devuelve cadenas anchas donde cada caracter ocupa 16 bits. A printf le podes pasar %ws para comprobarlo.

https://docs.microsoft.com/en-us/windows/win32/learnwin32/working-with-strings

PD. Los moderadores locales no tienen permisos para unir temas.

M*erda... tiene sentido. Con razon los siguientes 8 bits accediendos a ellos linealmente estan vacios... accedi a ellos como una prueba de su contenido.

Muchisimas gracias por tu ayuda.
205  Programación / ASM / Problema con CommandLineToArgvW en: 28 Febrero 2021, 20:59 pm
Si un moderador pudiese meter todas mis preguntas en un solo tema se lo agradeceria... mis preguntas las haria en ese tema.

Estoy intentando hacer un programa sencillo utilizando el cifrado XOR para mediante una clave cifrar un archivo.

Estoy intentando que el modificador -i especifique el archivo y que el modificador -k la clave. Sin embargo la funcion CommandLineArgvW aparentemente no me esta retornando un puntero a cadenas sino un puntero a caracteres. Especificamente el primer caracter de la cadena. ¿Como hago que retorne la cadena completa?

Código
  1. .686p
  2. .model flat, stdcall
  3.  
  4. includelib \masm32\lib\msvcrt.lib
  5. includelib \masm32\lib\kernel32.lib
  6. includelib \masm32\lib\shell32.lib
  7.  
  8. printf proto C, :vararg
  9. exit proto C, :dword
  10. putchar proto C, :dword
  11. strlen proto C, :dword
  12. strcpy proto C, :dword, :dword
  13. strcmp proto C, :dword, :dword
  14. memset proto C, :dword, :dword, :dword
  15.  
  16. GetCommandLineW proto stdcall
  17. CommandLineToArgvW proto stdcall, :dword, :dword
  18.  
  19. t macro i:vararg
  20. local s
  21. const segment
  22. s db i, 0
  23. const ends
  24. exitm <offset s>
  25. endm
  26.  
  27. halt macro
  28. local s
  29. s:
  30. jmp s
  31. endm
  32.  
  33. .data?
  34. db ?
  35.  
  36. .data
  37. db ?
  38.  
  39. .code
  40.  
  41. start:
  42. call main
  43. invoke exit, 0h
  44.  
  45. main proc
  46.  
  47. local szFileName[256]:byte, szKey[256]:byte, szCmdLine:dword, lpArgv:dword, dwArgc:dword
  48.  
  49. invoke memset, addr szFileName, 256, 0
  50. invoke memset, addr szKey, 256, 0
  51.  
  52. invoke GetCommandLineW
  53. mov szCmdLine, eax
  54.  
  55. invoke CommandLineToArgvW, szCmdLine, addr dwArgc
  56. mov lpArgv, eax
  57.  
  58. test eax, eax
  59. jnz @0
  60.  
  61. invoke printf, t(0ah, 0dh, "Error loading command line information.")
  62. mov eax, -1
  63. ret
  64.  
  65. @0:
  66.  
  67. xor ecx, ecx
  68. mov ecx, 01h
  69. mov ebx, lpArgv
  70.  
  71. .while ecx<dwArgc
  72.  
  73. mov ebx, lpArgv
  74. mov eax, 4
  75. mul ecx
  76. add ebx, eax
  77.  
  78. mov ebx, [ebx]
  79.  
  80. push ecx
  81. invoke printf, t(0ah, 0dh, "Argument %d is %s"), ecx, ebx
  82. pop ecx
  83.  
  84. push ecx
  85. invoke strcmp, ebx, t("-i")
  86. pop ecx
  87. test eax, eax
  88. jnz @1
  89.  
  90. push ecx
  91.  
  92. inc ecx
  93. mov eax, 4
  94. mul ecx
  95. add ebx, eax
  96.  
  97. mov ebx, [ebx]
  98.  
  99. invoke strcpy, addr szFileName, ebx
  100.  
  101. pop ecx
  102.  
  103. @1:
  104. inc ecx
  105. .endw
  106.  
  107. ret
  108. main endp
  109.  
  110. end start

Citar
mov ebx, lpArgv
mov eax, 4
mul ecx
add ebx, eax

mov ebx, [ebx]

push ecx
invoke printf, t(0ah, 0dh, "Argument %d is %s"), ecx, ebx
pop ecx

Citar
C:\Users\Programming\Desktop>console abc def

Argument 1 is a
Argument 2 is d
C:\Users\Programming\Desktop>
206  Programación / ASM / Re: Simbolo no resuelto por el linker. en: 28 Febrero 2021, 19:35 pm
Pues tienes razon... me estoy acordando de los tropiezos de aprender una nueva forma de programacion.

Gracias por tu ayuda y atencion.
Saludos.
207  Programación / ASM / Re: Simbolo no resuelto por el linker. en: 28 Febrero 2021, 14:17 pm
No puede ser... eso habia intentado pero con proto e invoke. ¿Por que no funciona con proto e invoke?

Código
  1. GetCommandLineA@0 proto stdcall

Citar
POLINK: error: Unresolved external symbol '_GetCommandLineA@0@0'.

208  Programación / ASM / Simbolo no resuelto por el linker. en: 28 Febrero 2021, 01:03 am
Hola.

Estaba buscando una forma de obtener la linea de comandos desde un programa escrito para MASM con la funcion GetCommandLineA de kernel32.lib, pero el linker no resuelve el simbolo:

Citar
POLINK: error: Unresolved external symbol '_GetCommandLineA'.

Lei sobre las convenciones de llamada en un articulo mencionado por @Eternal Idol: http://unixwiz.net/techtips/win32-callconv.html#decor pero la verdad no estoy seguro de en que esta afectando esto aqui.

El codigo:

Código
  1. .686p
  2. .model flat, stdcall
  3.  
  4. includelib \masm32\lib\msvcrt.lib
  5. includelib \masm32\lib\kernel32.lib
  6.  
  7. printf proto C, :dword
  8. exit proto C, :dword
  9.  
  10. extern stdcall GetCommandLineA: proc
  11.  
  12. t macro i:vararg
  13. local s
  14. const segment
  15. s db i, 0
  16. const ends
  17. exitm <offset s>
  18. endm
  19.  
  20. .data?
  21. db ?
  22.  
  23. .data
  24. db ?
  25.  
  26. .code
  27.  
  28. start:
  29. call main
  30. invoke exit, 0h
  31.  
  32. main proc
  33.  
  34. call GetCommandLineA
  35.  
  36. ret
  37. main endp
  38.  
  39. end start
209  Programación / ASM / Re: ¿Como declarar un array dentro de una estructura en MASM? en: 23 Febrero 2021, 23:03 pm
Bueno, 20 minutos perdidos...
Me basada en la salida de esto:

Código
  1. invoke printf, __txt ("%d", 0dh, 0ah), sizeof _struct

que producia 128 con dos arrays de 128 bytes, pero creo que habia escrito algo mal porque ahora si se ve 256...  :huh:
210  Programación / ASM / ¿Como declarar un array dentro de una estructura en MASM? en: 23 Febrero 2021, 22:42 pm
Llevo googleandolo 20 minutos y no logro encontrar una forma de que esto:

Código
  1. _struct struct
  2. data0 db 64 dup (?)
  3. data1 db 64 dup (?)
  4. _struct ends

funcione correctamente. Cuando compruebo el tamaño de _struct es 64 (cuando deberia ser 128).

¿Como declaro un array dentro de una estructura correctamente en MASM?

Segun la MSDN:

Citar
name STRUCT ⟦alignment⟧ ⟦, NONUNIQUE⟧
field-declarations
name ENDS
https://docs.microsoft.com/es-es/cpp/assembler/masm/struct-masm?view=msvc-160

¿Cual es exactamente la sintaxis de field-declarations cuando se trata de un array?

Gracias de antemano.
Saludos.
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 43
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines