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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 ... 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ... 381
431  Programación / ASM / Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla? en: 21 Febrero 2021, 16:15 pm
https://docs.microsoft.com/en-us/cpp/assembler/masm/proto?view=msvc-160

El nombre, el numero de parametros y la convencion de llamada. Lo mismo de antes pero sin usar PROTO/invoke:

Código
  1. includelib user32.lib
  2. ...
  3. EXTERN stdcall MessageBoxA@16 : PROC
  4. ...
  5. push 0
  6. push offset caption
  7. push offset msg
  8. push 0
  9. call MessageBoxA@16

En STDCALL el codigo llamado se ocupa de acomodar la pila, en C es lo contrario y cuando usas invoke con funciones de C ademas de empujar los parametros invoke se ocupa tambien de acomodar la pila.

Ejemplo:
  00000022: 68 00 00 00 00     push        offset __0
  00000027: E8 00 00 00 00     call        _printf
 0000002C: 83 C4 04           add         esp,4
432  Programación / ASM / Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla? en: 20 Febrero 2021, 22:58 pm
De manera analoga a las funciones de la RTL de C, se declara el PROTO (el 99% son STDCALL) con el nombre de la funcion y sus parametros y despues se puede usar invoke.


https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox

Código
  1. includelib user32.lib
  2.  
  3. MessageBoxA PROTO stdcall, :DWORD, :DWORD, :DWORD, :DWORD
  4.  
  5. ...
  6. .data
  7. msg db "HOLA", 0
  8. caption db "PRUEBA", 0    
  9. ...
  10. main proc
  11.  
  12. invoke MessageBoxA, 0, offset msg, offset caption, 0
  13.  

Este trabajo de los PROTO viene ya hecho con MASM32 incluyendo si recuerdo bien windows.inc, ya hace varios años que no uso MASM32.


Es insostenible tener que mantener binarios para varias plataformas (x86, x64 y ahora viene ARM64 a toda maquina), es sin lugar a dudas mas duro escribir lo mismo sin tener las facilidades de la programacion orientada a objetos y/o generica. Programadores para un proyecto profesional que sean capaces de crear y mantenerlo en ensamblador ... en una empresa grande de software tal vez y con suerte tengas un par. No vale la pena el esfuerzo de escribir un proyecto entero en ensamblador, si es muy util para depurar y comprender problemas complejos que con solo saber C/C++ seran dificiles de solucionar. Si vale la pena aprenderlo y hacer proyectos puntuales, prototipos, depurar, etc. pero no me meteria en nada serio mas alla de un modulo .asm dentro de un proyecto en C/C++ cuando no hay mas remedio (solo lo necesite una  vez en casi 18 años de carrera).
433  Programación / ASM / Re: ¿Por que tanta diferencia de tamaño entre un programa compilado en un HLL y ASM? en: 20 Febrero 2021, 22:50 pm


 ;D

A todo el mundo le funciona ...



Si, al enlazar una libreria estatica (.LIB de codigo) el primer programa contiene todo el codigo de la RTL en su ejecutable, el segundo simplemente enlaza dinamicamente la DLL (con un .LIB de importacion).

434  Programación / ASM / Re: ¿Existe alguna forma de declarar variables en la pila en ensamblador? en: 20 Febrero 2021, 22:20 pm
De nadas  ::)
435  Programación / ASM / Re: ¿Por que tanta diferencia de tamaño entre un programa compilado en un HLL y ASM? en: 20 Febrero 2021, 22:11 pm
Ese pragma es para el compilador:
https://docs.microsoft.com/en-us/cpp/preprocessor/optimize?view=msvc-160

Por el tamaño pero depende de la configuracion del proyecto y lo que termine por pasar en linea de comandos:
https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-160

Si probaras la que te deje verias la diferencia usando el mismo codigo fuente:
cl /O1 /MD hello.cpp



No, pero tu ejecutable tiene por cada uno de los PROTO un funcion importada. Compara los 2 ejecutables con https://www.dependencywalker.com/

PD. GetProcAddress seria enlace dinamico en tiempo de ejecucion y la otra en tiempo de carga (esta en el PE el enlace en si mismo):
https://docs.microsoft.com/en-us/windows/win32/dlls/using-run-time-dynamic-linking
436  Programación / ASM / Re: ¿Existe alguna forma de declarar variables en la pila en ensamblador? en: 20 Febrero 2021, 21:51 pm
En MASM podes usar PROC y LOCAL para eso.

In the second directive, within a procedure definition (PROC), LOCAL creates stack-based variables that exist for the duration of the procedure. The labelId may be a simple variable or an array containing count elements, where count is a constant expression.

https://docs.microsoft.com/en-us/cpp/assembler/masm/local-masm?view=msvc-160
https://docs.microsoft.com/en-us/cpp/assembler/masm/proc?view=msvc-160
437  Programación / ASM / Re: ¿Por que tanta diferencia de tamaño entre un programa compilado en un HLL y ASM? en: 20 Febrero 2021, 21:26 pm
De nadas  ::)

https://foro.elhacker.net/programacion_cc/eliminar_basura_de_los_exes_compilados_en_c-t299411.0.html
438  Programación / ASM / Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla? en: 20 Febrero 2021, 21:26 pm
Si y ademas esa API la podras usar desde C/C++ tambien.
439  Programación / ASM / Re: Representacion de caracteres especiales de C en ensamblador. en: 20 Febrero 2021, 21:24 pm
No conozco otra forma:

Código
  1. blabla db "HOLA", 13, 10, 0
440  Programación / ASM / Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla? en: 20 Febrero 2021, 20:02 pm
La mayoria de la RTL de C en Windows termina llamando a la API del mismo (y lo mismo con cualquier S.O. y sus servicios, no queda otra), fopen llama a CreateFile* por ejemplo.

Microsoft Visual C Run Time.
Páginas: 1 ... 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ... 381
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines