;===============================================================================
;Program : w32g03
;Version : 0.0.1
;Author : Yeoh HS
;Date : 6 January 2018
;Purpose : A Win32 console program that uses gets_s and printf
;fasmg : i17sx
;===============================================================================
include 'format/format.inc'
format PE Console
entry start
section '.text' code readable executable
start:
push Prompt
push FormatString
call [printf]
push 80
push UserInput
call [gets_s]
push UserInput
push Welcome
call [printf]
push 0
call [ExitProcess]
section '.data' data readable writeable
FormatString db '%s',0
Prompt db 'Enter a string and press Enter: ',0
Welcome db 'You entered: %s',0
UserInput rb 80
;-------------------------------------------------------------------------------
section '.idata' import data readable writeable
dd 0,0,0,RVA kernel_name,RVA kernel_table
dd 0,0,0,RVA user_name,RVA user_table
dd 0,0,0,RVA msvcrt_name,RVA msvcrt_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dd RVA _ExitProcess
dd 0
user_table:
MessageBoxA dd RVA _MessageBoxA
dd 0
msvcrt_table:
printf dd RVA _printf
gets_s dd RVA _gets_s
dd 0
kernel_name db 'Kernel32.dll',0
user_name db 'User32.dll',0
msvcrt_name db 'msvcr100.dll',0
_ExitProcess dw 0
db 'ExitProcess',0
_MessageBoxA dw 0
db 'MessageBoxA',0
_printf dw 0
db 'printf',0
_gets_s dw 0
db 'gets_s',0
;-------------------------------------------------------------------------------
section '.reloc' fixups data readable discardable ; needed for Win32s