Установщик пароля на программы. - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. В общем я не разбираюсь в ассемблере, программирую на высокоуровневых яп. Но тут попросили помочь, да и самому стало интересно написать программу. Вот условия задачи:

Написать программу, которая модифицирует произвольный *.com файл таким образом, что при его запуске проводилась проверка пароля при входе. В случае несоответствия пароля производится аварийный выход из программы. Имя модифицируемого файла и пароль желательно вводить в командной строке.

Нашел код на ассемблере, где нужно ввести пароль за несколько попыток. Но не понимаю само условие: "модифицирует произвольный *.com файл". Компилятор же сам компилируется комовский файл. Извините если запутано спрашиваю, в общем помогите пожалуйста)

Решение задачи: «Установщик пароля на программы.»

textual
Листинг программы
.model  small
.stack  100h
.data
pass db 'Parol'
passLen=$-pass              
MaxInputLen db 50             
InputLen db 0                    
InputBuff db 50 dup (0)           
InputMsg db 'Enter password: $'
MsgWrong db 'Password is wrong!$'
MsgAccept db 'Password is accept!$'
Access db 0
 
.code
start:
mov ax,@data
mov ds,ax
mov es,ax         
xor ax,ax
 
call MessageForIn             
call input                
call Check               
cmp Access,1             
je GoodPass             
call BadMsg            
 
jmp exit                    
 
GoodPass:
  call GoodMsg             
 
exit:
  mov ax,4c00h 
  int 21h
 
input proc
  mov ah ,0Ah           
  mov dx,offset MaxInputLen  
  int 21h             
  mov dl,10  
  mov ah,6
  int 21h
  ret
endp
 
MessageForIn proc
  mov ah,9
  mov dx,offset InputMsg    
  int 21h
  ret
endp
 
Check proc      
  mov ah,passLen
  mov bh,InputLen
  cmp ah,bh   
  jne wrong  
  mov di,offset pass
  mov si,offset InputBuff
  mov cx,PassLen 
  cld 
  repe cmpsb 
  jne wrong           
  mov Access,1
  wrong:
    ret 
endp
 
GoodMsg proc
  mov ah,9
  mov dx,offset MsgAccept
  int 21h
  ret
endp
 
BadMsg proc
  mov ah,9
  mov dx,offset MsgWrong
  int 21h
  ret
endp
 
end start

Объяснение кода листинга программы

  1. Установка начального значения регистров.
  2. Вывод сообщения для ввода пароля.
  3. Ввод пароля в буфер ввода.
  4. Проверка правильности введенного пароля.
  5. Если пароль верный, то выводится сообщение о успешном вводе.
  6. Если пароль не верный, то выводится сообщение о неверном вводе.
  7. Выход из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5