Linux NASM - 隐藏终端输入

时间:2021-01-22 21:52:07

标签: linux assembly x86 nasm

有没有办法在汇编程序中禁用和启用终端输入的显示?

我正在 nasm 中编写一个命令行程序,其中用户输入它会定期从终端(我想显示)读取,并且程序会休眠一段时间。在此期间(与我在 Windows 命令行中发现的不同),用户仍然可以在终端中输入。我想隐藏该文本。

这是一个请求提示并在特定消息之间等待的程序:

section .text
   global _start

_start:
   
   mov edx,lhello
   mov ecx,mhello
   mov ebx,1
   mov eax,4    ; sys_write
   int 0x80
   
   mov dword[sleep_sec],1
   mov dword[sleep_usec],0
   mov ecx,0
   mov ebx,sleep
   mov eax,162  ; sys_nanosleep
   int 0x80
   
   mov edx,lwrite
   mov ecx,mwrite
   mov ebx,1
   mov eax,4    ; sys_write
   int 0x80
   
   mov edx,99
   mov ecx,usergift
   mov ebx,0
   mov eax,3    ; sys_read
   int 0x80
   
   mov edx,lsleep
   mov ecx,msleep
   mov ebx,1
   mov eax,4    ; sys_write
   int 0x80
   
   mov dword[sleep_sec],2
   mov dword[sleep_usec],0
   mov ecx,0
   mov ebx,sleep
   mov eax,162  ; sys_nanosleep
   int 0x80
   
   mov edx,ldone
   mov ecx,mdone
   mov ebx,1
   mov eax,4    ; sys_write
   int 0x80
   
   mov eax,1    ; sys_exit
   int 0x80 ; the end!
   
   
section .bss
usergift resb 99

section .data
sleep:
   sleep_sec  dd 0
   sleep_usec dd 0

mhello db 'hello-',0xA
lhello equ $ - mhello

mwrite db 'give me something:'
lwrite equ $ - mwrite

msleep db 'wait for 2 seconds...',0xA
lsleep equ $ - msleep

mdone db 'thank you.',0xA
ldone equ $ - mdone

当用户在提示时输入 love 时给出以下输出-

hello-
give me something:love
wait for 2 seconds...
thank you.

但用户也可以在提示之外写字-

hello-
ha!give me something:love
wait for 2 seconds...
lies!thank you.

0 个答案:

没有答案