IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Différence entre différentes versions de Fasm


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 399
    Par défaut Différence entre différentes versions de Fasm
    Bonjour,

    Je reprend le coding asm que j'ai arrêté depuis 12 ans (oui quand même !) et j'ai quelques souçis de compilation avec la nouvelle version de Fasm.
    Ce qu'il faut savoir au départ, c'est que mon code compile toujours avec les anciens fichiers include, et que le code fonctionne comme ça.
    Mais j'ai voulu tester la version 2024 de Fasm et voilà le problème que je rencontre:

    Voilà déjà le code, qui sert à scanner des ip:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
     
    format PE console 5.0
    include 'include/windows/win32a.inc'
    entry start
     
     
    ;--------------------------------------------------
    section '.text' code readable executable
    ;--------------------------------------------------
     
    start:
     
    	push	NULL
    	push	FILE_ATTRIBUTE_NORMAL
    	push	OPEN_ALWAYS
    	push	NULL
    	push	NULL
    	push	GENERIC_WRITE
    	push	FilePath
    	call	[CreateFile]
     
    	mov	[hFile],eax
     
    	push	FILE_END
    	push	0
    	push	0
    	push	[hFile]
    	call	[SetFilePointer]
     
    	push	wsadata
    	push	0x202
    	call	[WSAStartup]
     
    	mov	cx,port
    	rol	cx,8
    	mov	word [sockaddr+2],cx
     
    	mov	[sockaddr],AF_INET
     
    	push	ip_addr
    	call	[inet_addr]
     
    	mov	dword [sockaddr+4],eax
     
         @@:
    	push	NULL
    	push	lpNumberOfBytesWritten
    	push	2
    	push	lpBuffer
    	push	[hFile]
    	call	[WriteFile]
     
    	push	0
    	push	0
    	push	0
    	push	64
    	push	host
    	push	16
    	push	sockaddr
    	call	[getnameinfo]
     
    	push	eax
    	push	formh
    	call	[printf]
     
    	add	esp,8
     
    	mov	edi,host
    	call	strlen
     
    	push	NULL
    	push	BytesWrite
    	push	eax
    	push	host
    	push	[hFile]
    	call	[WriteFile]
     
    	inc	byte [sockaddr+5]
    	jnz	@b
     
    	inc	byte [sockaddr+4]
    	jnz	@b
     
    	push	[hFile]
    	call	[CloseHandle]
     
    	push	0
    	call	[ExitProcess]
     
    strlen:
    	xor	eax,eax
    	xor	ecx,ecx
    	not	cx
    	cld
    	repnz	scasb
    	not	cx
    	dec	cx
    	mov	eax,ecx
    	ret
     
    ;--------------------------------------------------
    section '.data' data readable writeable
    ;--------------------------------------------------
     
    wsadata WSADATA
     
    FilePath db 'file.txt',0
    hFile dd 0
    BytesWrite dd 0
     
    lpBuffer db 13,10
    lpNumberOfBytesWritten dd 0
     
    ip_addr db '1.1.1.1',0
     
    sockaddr rb 16
    host rb 64
     
    port = 13000
     
    formh db '%08x',13,10,0
    formd db '%d',13,10,0
    forms db '%s',13,10,0
    formc db '%c',13,10,0
     
    ;--------------------------------------------------
    section '.idata' import data readable writeable
    ;--------------------------------------------------
     
    library kernel32,'kernel32.dll',\
    	msvcrt,'msvcrt.dll',\
    	user32,'user32.dll',\
    	wsock32,'ws2_32.dll'
     
    include 'include\windows\api\kernel32.inc'
    include 'include\windows\api\user32.inc'
    include	'include\windows\api\wsock32.inc'
     
    import msvcrt,\
    printf,'printf',\
    sprintf,'sprintf'
    Et voilà l'erreur que j'obtiens avec la nouvelle version de fasm:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    flat assembler  version 1.73.32  (1048576 kilobytes memory)
    scan-host.asm [59]:
            push    sockaddr
    include/macro/struct.inc [124] sockaddr [13]:
       common label . at \\..base \\\}
    include/macro/struct.inc [124] match [11]:
       common label . at \\..base \\\}
    processed: label push at ..base?TF
    error: invalid argument.
    Alors je me doute bien qu'après 12ans il y eu beaucoup de modifications dans les codes, mais là je ne comprend pas, vous comprenez, après 12ans d'arrêt, je suis complètement largué...
    J'ai oublié de préciser, je tourne sous Windows 11 pc très récent (moins d'un mois)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 399
    Par défaut
    Voilà une réponse que m'a apporté une ia (chatGPT), et elle fonctionne. Donc apparemmment ça bloque avec les macro mais pas que.. En tout cas le code fonctionne sur fasm 2024.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
     
    format PE console 5.0
    include 'include/win32a.inc'
    entry start
     
     
    ;--------------------------------------------------
    section '.text' code readable executable
    ;--------------------------------------------------
     
    start:
     
    	push	NULL
    	push	FILE_ATTRIBUTE_NORMAL
    	push	OPEN_ALWAYS
    	push	NULL
    	push	NULL
    	push	GENERIC_WRITE
    	push	FilePath
    	call	[CreateFile]
     
    	mov	[hFile],eax
     
    	push	FILE_END
    	push	0
    	push	0
    	push	[hFile]
    	call	[SetFilePointer]
     
    	push	wsadata
    	push	0x202
    	call	[WSAStartup]
     
    	mov	cx,port
    	rol	cx,8
    	mov	word [my_sockaddr+2],cx
     
    	mov	[my_sockaddr],AF_INET
     
    	push	ip_addr
    	call	[inet_addr]
     
    	mov	dword [my_sockaddr+4],eax
     
         @@:
    	push	NULL
    	push	lpNumberOfBytesWritten
    	push	2
    	push	lpBuffer
    	push	[hFile]
    	call	[WriteFile]
     
    	push	0
    	push	0
    	push	0
    	push	64
    	push	host
    	push	16
    	push	my_sockaddr
    	call	[getnameinfo]
     
    	push	eax
    	push	formh
    	call	[printf]
     
    	add	esp,8
     
    	mov	edi,host
    	call	strlen
     
    	push	NULL
    	push	BytesWrite
    	push	eax
    	push	host
    	push	[hFile]
    	call	[WriteFile]
     
    	inc	byte [my_sockaddr+5]
    	jnz	@b
     
    	inc	byte [my_sockaddr+4]
    	jnz	@b
     
    	push	[hFile]
    	call	[CloseHandle]
     
    	push	0
    	call	[ExitProcess]
     
    strlen:
    	xor	eax,eax
    	xor	ecx,ecx
    	not	cx
    	cld
    	repnz	scasb
    	not	cx
    	dec	cx
    	mov	eax,ecx
    	ret
     
    ;--------------------------------------------------
    section '.data' data readable writeable
    ;--------------------------------------------------
     
    wsadata WSADATA
     
    FilePath db 'file.txt',0
    hFile dd 0
    BytesWrite dd 0
     
    lpBuffer db 13,10
    lpNumberOfBytesWritten dd 0
     
    ip_addr db '1.1.1.1',0
     
    my_sockaddr rb 16
    host rb 64
     
    port = 13000
     
    formh db '%08x',13,10,0
    formd db '%d',13,10,0
    forms db '%s',13,10,0
    formc db '%c',13,10,0
     
    ;--------------------------------------------------
    section '.idata' import data readable writeable
    ;--------------------------------------------------
     
    library kernel32, 'kernel32.dll',\
            msvcrt,   'msvcrt.dll',\
            user32,   'user32.dll',\
            wsock32,  'ws2_32.dll'
     
    import kernel32,\
      CreateFile,     'CreateFileA',\
      SetFilePointer, 'SetFilePointer',\
      WriteFile,      'WriteFile',\
      CloseHandle,    'CloseHandle',\
      ExitProcess,    'ExitProcess'
     
    import msvcrt,\
      printf,  'printf',\
      sprintf, 'sprintf'
     
    import user32,\
      MessageBox, 'MessageBoxA'  ; (tu peux supprimer si non utilisé)
     
    import wsock32,\
      WSAStartup,   'WSAStartup',\
      inet_addr,    'inet_addr',\
      getnameinfo,  'getnameinfo'
    Mais ça ne m''explique pas pour autant ce qui plante avec ces macros...
    Si vous savez ce qui bloque avec ces macro ou si vous avez une solution plus élégante à proposer que celle d'une ia, allez-y...

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/01/2006, 00h35
  2. [VS 2005 RTM][CF 2.0] Compatibilité entre les versions
    Par le-roy_a dans le forum Visual Studio
    Réponses: 3
    Dernier message: 09/11/2005, 16h48
  3. Import de DUMP entre différentes version de oracle
    Par Fraise des Bois dans le forum Oracle
    Réponses: 2
    Dernier message: 02/11/2005, 16h03
  4. [DOM] Problème entre différentes versions de java
    Par scorpiwolf dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/03/2005, 11h40
  5. Réponses: 7
    Dernier message: 04/03/2004, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo