Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: .:UND3R:. en 30 Agosto 2012, 04:44 am



Título: error A2009: syntax error in expression
Publicado por: .:UND3R:. en 30 Agosto 2012, 04:44 am
Hola a todos, intentando ensamblar ML me muestra el siguiente error:

error A2009: syntax error in expression

esto es mostrado en la siguiente línea:
Código
  1. inf_process  PROCESSENTRY32 <>

declaro la estructura de la siguiente manera:

Código
  1. PROCESSENTRY32 STRUCT
  2. dwSize DWORD ?
  3. cntUsage DWORD ?
  4. th32ProcessID DWORD ?
  5. th32DefaultHeapID DWORD PTR ?
  6. th32ModuleID DWORD ?
  7. cntThreads DWORD ?
  8. th32ParentProcessID DWORD ?
  9. pcPriClassBase SDWORD ?
  10. dwFlags DWORD ?
  11. szExeFile BYTE ?
  12. PROCESSENTRY32 ENDS

¿Alguna idea del motivo de este error?, saludos.


Título: Re: error A2009: syntax error in expression
Publicado por: x64core en 30 Agosto 2012, 10:57 am
creo que deberias revisar bien, además ProcessEntry32 es ya definida en los includes

por cierto estas ocupando radasm?


Título: Re: error A2009: syntax error in expression
Publicado por: .:UND3R:. en 31 Agosto 2012, 00:38 am
EDIT:

Código
  1. th32DefaultHeapID DWORD PTR ?

 por:

Código
  1. th32DefaultHeapID DWORD ?

pero aun así la función que estoy usando no retorna bien, sospecho que es por causa de STRUCT.

Solucionado, estaba intentando utilizar la función Process32First el cual debía inicializar el valor dwSize de la estructura antes de poder llamarla, adjunto la estructura:

Código
  1. PROCESSENTRY32 STRUCT
  2. dwSize               DWORD    ?
  3. cntUsage             DWORD    ?
  4. th32ProcessID         DWORD    ?          
  5. th32DefaultHeapID     DWORD    ?
  6. th32ModuleID         DWORD    ?          
  7. cntThreads           DWORD    ?
  8. th32ParentProcessID   DWORD    ?  
  9. pcPriClassBase       DWORD    ?        
  10. dwFlags               DWORD    ?
  11. szExeFile             BYTE   MAX_PATH DUP(?)  
  12. PROCESSENTRY32 ENDS
  13.  


Título: Re: error A2009: syntax error in expression
Publicado por: _Enko en 31 Agosto 2012, 16:08 pm
Siempre puedes reserver la cantidad de bytes que ocupa la estructura, y luego pasar el puntero a eso.

Total, a la api poco le importa si tienes o no definidas las estructuras, mientras este reservado el espacio necesario.