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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?  (Leído 6,579 veces)
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« en: 20 Febrero 2021, 19:18 pm »

Hola,

El primer lenguaje que aprendi fue C y hasta ahora sigue siendo el unico que utilizo. Despues de unos meses estudiando MASM comienzo a experimentar con el; especificamente MASM32. Hasta ahora la unica libreria que he utilizado (en general) ha sido msvcrt.lib (Notese mi relacion con C). Siento que estoy en las mismas, y me surgen las preguntas:

¿Deberia estudiar la libreria "Estandar" de MASM32 (masm32rt.inc)?
¿Deberia mas bien estudiar las APIs de Windows para trabajar con ellas directamente?
¿Me basta utilizar la libreria de C?

Por cierto... ¿Alguien  sabe que siginfica el acronimo MSVCRT?

Saludos y gracias de antemano.


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #1 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.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #2 en: 20 Febrero 2021, 21:17 pm »

La mayoria de la RTL de C en Windows termina llamando a la API del mismo

Claro... Es la unica forma en que puede llegar a los dispositivos... Bueno, creo que seria mas "Oportuno" que me dedique a aprender la API de Windows. Al final probablemente me termine siendo mas util que conocer solo la libreria de C.

Gracias por tu atencion.
Saludos.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #3 en: 20 Febrero 2021, 21:26 pm »

Si y ademas esa API la podras usar desde C/C++ tambien.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #4 en: 20 Febrero 2021, 22:44 pm »

Si y ademas esa API la podras usar desde C/C++ tambien.

¿Como podria acceder a la API de Windows a traves de MASM?

No entiendo por que dicen que la programacion en ensamblador es mas complicada. Creo que una vez con practica podria beneficiar mejor de lo que perjuicia que incluso C o C++.

Dare marcha atras como cangrejo.  :P
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #5 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).
« Última modificación: 20 Febrero 2021, 23:09 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #6 en: 21 Febrero 2021, 15:45 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.

¿Entonces PROTO simplemente define la convencion de la llamada?
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #7 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
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #8 en: 21 Febrero 2021, 21:16 pm »

Excelente... ahora entiendo eso...

Sin embargo, ¿por qué añades un arroba y un dieciséis en la declaración del prototipo y en la llamada?
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Que tan potente es la libreria masm32rt.inc? ¿Vale la pena estudiarla?
« Respuesta #9 en: 21 Febrero 2021, 21:37 pm »

Para que enlace correctamente.

http://unixwiz.net/techtips/win32-callconv.html#decor
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Vale la pena mudarse a .net?
Programación Visual Basic
juancho77 5 3,114 Último mensaje 15 Febrero 2008, 23:50 pm
por Zeroql
vale la pena aprender asm? « 1 2 3 »
ASM
xexio 28 19,670 Último mensaje 29 Julio 2010, 20:29 pm
por leogtz
Vale la pena una pentium 3 « 1 2 »
Hardware
Nick_And 10 7,405 Último mensaje 31 Agosto 2011, 14:56 pm
por Aprendiz-Oscuro
Vale la pena ? « 1 2 »
GNU/Linux
yumario 10 6,718 Último mensaje 13 Noviembre 2011, 21:27 pm
por Foxy Rider
¿Vale la pena?
Scripting
Achraf 4 3,882 Último mensaje 19 Febrero 2015, 16:21 pm
por PedroDJavier
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines